二叉树遍历(逆序预订)

时间:2013-11-05 22:10:26

标签: c++ recursion binary-tree

我想有一个向量在每次树遍历到右子树时推入'R',并在每次树遍历到左子树时推入'L'。

void reverse_preorder(BTree<string>* root)
{ vector<string>a;
    if (root != NULL) {
        a.push_back("R");
        if(root->right == NULL) a.push_back("L");
        reverse_preorder(root->right);
        reverse_preorder(root->left);
    }
}

但由于某种原因,输出即时获取的顺序不正确。我做错了什么?

1 个答案:

答案 0 :(得分:0)

使矢量成为您班级的成员。然后

void reverse_preorder(BTree<string>* root)
{
    if (root != NULL) {
        if (root->right != NULL) a.push_back("R");
        reverse_preorder(root->right);
        if (root->left != NULL) a.push_back("L");
        reverse_preorder(root->left);
    }
}

虽然,我看不出它会如何帮助你做一个'漂亮'的格式化。