标签:algorithm leetcode 面试题 算法 二叉树
TreeNode *addNode(vector<int> &inorder, int s1, int end1, vector<int> &postorder, int s2, int end2) { if(s1 > end1 || s2 > end2) return NULL; //construct the root TreeNode *root = new TreeNode(postorder[end2]); //index_of_root: the index of root in inorder. int i = s1; for(; i <= end1; ++i) { if(inorder[i] == postorder[end2]) break; } if(i > end1) return NULL; int dist = i - s1; //construct the left branch root->left = addNode(inorder, s1, i - 1, postorder, s2, s2 + dist - 1); //construct the right branch root->right = addNode(inorder, i + 1 , end1, postorder, s2 + dist, end2 - 1); return root; } TreeNode *buildTree(vector<int> &inorder, vector<int> &postorder) { int inLen = inorder.size(); int posLen = postorder.size(); if(inLen == 0 || posLen == 0 || inLen != posLen) return NULL; TreeNode *root = addNode(inorder, 0, inLen - 1, postorder, 0, posLen - 1); return root; }
【leetcode】Construct Binary Tree from Inorder and Postorder Traversal,布布扣,bubuko.com
【leetcode】Construct Binary Tree from Inorder and Postorder Traversal
标签:algorithm leetcode 面试题 算法 二叉树
原文地址:http://blog.csdn.net/shiquxinkong/article/details/28892221