leetcode 106 Construct Binary Tree from Inorder and Postorder Traversal

来源:互联网 发布:linux c编程 高清pdf 编辑:程序博客网 时间:2024/06/17 13:38


Given inorder and postorder traversal of a tree, construct the binary tree.

Note:
You may assume that duplicates do not exist in the tree.

Subscribe to see which companies asked this question


/** * 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:    void tree(TreeNode *&root, vector<int> &postorder, int &num, vector<int> &inorder, int left, int right) {if(left > right) {root = NULL;return;}root = new TreeNode(postorder[num--]);int i = 0;for(i = left; i <= right; i++) {if(inorder[i]==postorder[num+1]) break;}tree(root->right, postorder, num, inorder, i+1, right);tree(root->left, postorder, num, inorder, left, i-1);return ;}TreeNode *buildTree(vector<int> &inorder, vector<int> &postorder) {TreeNode *root=NULL;if(inorder.size()==0 || postorder.size()==0) return root;int num = postorder.size()-1;tree(root, postorder, num, inorder, 0, num);return root;}};



0 0
原创粉丝点击