二叉树的先序,中序,后序遍历的递归实现

来源:互联网 发布:淘宝店铺怎样发布宝贝 编辑:程序博客网 时间:2024/06/06 03:50

代码十分简单,仅用作自己记录。

/*struct TreeNode {    int val;    struct TreeNode *left;    struct TreeNode *right;    TreeNode(int x) :            val(x), left(NULL), right(NULL) {    }};*/class TreeToSequence {public:    void pre(TreeNode *root, vector<int> &preOrder){        if(root == NULL)            return;        preOrder.push_back(root->val);    //先访问根节点        pre(root->left, preOrder);        pre(root->right, preOrder);    }    void in(TreeNode *root, vector<int> &inOrder){        if(root == NULL)            return;        in(root->left, inOrder);        inOrder.push_back(root->val);    //先访问左节点,然后访问根节点        in(root->right, inOrder);    }    void post(TreeNode *root, vector<int> &postOrder){        if(root == NULL)            return;        post(root->left, postOrder);        post(root->right, postOrder);        postOrder.push_back(root->val);    //先访问完左右节点,最后访问根节点    }    vector<vector<int> > convert(TreeNode* root) {        // write code here        vector<vector<int> > res;        vector<int> preOrder;        vector<int> inOrder;        vector<int> postOrder;        pre(root, preOrder);        in(root, inOrder);        post(root, postOrder);        res.push_back(preOrder);        res.push_back(inOrder);        res.push_back(postOrder);        return res;    }};
0 0