Construct Binary Tree from Inorder and Postorder Traversal

来源:互联网 发布:编译单个java文件 编辑:程序博客网 时间:2024/05/16 11:52

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

Note:

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

struct Node{int val;Node(int v){val = v;left = right = NULL;}Node *left;Node *right;};Node* visit(vector<int> &postorder, int postLeft, int postRight, vector<int> &inorder, int inLeft, int inRight){if (postLeft > postRight){return NULL;}int index = inLeft;for (;index <= inRight; index++){if (inorder[index] == postorder[postRight]){break;}}int leftLength = index - inLeft;Node *left = visit(postorder, postLeft, postLeft+leftLength-1, inorder, inLeft, index-1);Node *right = visit(postorder, postLeft+leftLength, postRight-1, inorder, index+1, inRight);Node *p = new Node(postorder[postRight]);p->left = left;p->right = right;return p;}Node* buildTree(vector<int> &postorder, vector<int> &inorder){if (postorder.size() < 1){return NULL;}return visit(postorder, 0, postorder.size()-1, inorder, 0, inorder.size()-1);}


0 0
原创粉丝点击