leetcode 日经贴,Cpp code -Construct Binary Tree from Inorder and Postorder Traversal

来源:互联网 发布:淘宝客服退款中心 编辑:程序博客网 时间:2024/06/05 23:02

Construct Binary Tree from Inorder and Postorder Traversal

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    TreeNode* build(int *post, int *in, int n) {        if (n <= 0) {            return NULL;        }        TreeNode *r = new TreeNode(post[n - 1]);        int p = 0;        while (p < n && in[p] != post[n - 1]) {            ++p;        }        if (p > n) {            //error            return r;        }        r->left = build(post, in, p);        r->right = build(post + p, in + 1 + p, n - p - 1);    }    TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {        if (postorder.size() != inorder.size() || postorder.empty()) {            return NULL;        }        return build(&postorder[0], &inorder[0], postorder.size());    }};


0 0