lintcode:Construct Binary Tree from Preorder and Inorder Traversal
来源:互联网 发布:火车票在线制作软件 编辑:程序博客网 时间:2024/05/12 00:01
Given preorder and inorder traversal of a tree, construct the binary tree.
Notice
You may assume that duplicates do not exist in the tree.
Example
Given in-order [1,2,3]
and pre-order [2,1,3]
, return a tree:
2 / \1 3
/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val; * this->left = this->right = NULL; * } * } */ class Solution { /** *@param preorder : A list of integers that preorder traversal of a tree *@param inorder : A list of integers that inorder traversal of a tree *@return : Root of a tree */private: TreeNode *buildTreeHelper(vector<int> &preorder, int start1, int end1, vector<int> &inorder, int start2, int end2) { if (end1 < start1 || end2 < start2) return NULL; TreeNode *root = new TreeNode(preorder[start1]); int rootIdx = start2; int offset = 0; //这个offset的概念很重要 for (; rootIdx <= end2; rootIdx++) { if (inorder[rootIdx] == preorder[start1]) break; offset++; } //start1+rootIdx是错误的,对于左边来说,应该是start1+offset; root->left = buildTreeHelper(preorder, start1+1, start1+offset, inorder, start2, rootIdx-1); root->right = buildTreeHelper(preorder, start1+offset+1, end1, inorder, rootIdx+1, end2); return root; } public: TreeNode *buildTree(vector<int> &preorder, vector<int> &inorder) { // write your code here return buildTreeHelper(preorder, 0, preorder.size()-1, inorder, 0, inorder.size()-1); }};
0 0
- lintcode: Construct Binary Tree from Preorder and Inorder Traversal
- lintcode:Construct Binary Tree from Preorder and Inorder Traversal
- *[Lintcode]Construct Binary Tree from Preorder and Inorder Traversal
- LintCode 159:Construct Binary Tree from Preorder and Inorder Traversal
- *(leetcode) Construct Binary Tree from Preorder and Inorder Traversal (tree)
- LeetCode[Tree]: Construct Binary Tree from Preorder and Inorder Traversal
- [leetcode][tree] Construct Binary Tree from Preorder and Inorder Traversal
- Construct Binary Tree from Preorder and Inorder Traversal & Construct Binary Tree from Inorder and P
- LeetCode: Construct Binary Tree from Preorder and Inorder Traversal
- Construct Binary Tree from Preorder and Inorder Traversal
- [LeetCode]Construct Binary Tree from Preorder and Inorder Traversal
- LeetCode Construct Binary Tree from Preorder and Inorder Traversal
- [Leetcode] Construct Binary Tree from Preorder and Inorder Traversal
- Leetcode: Construct Binary Tree from Preorder and Inorder Traversal
- [LeetCode] Construct Binary Tree from Preorder and Inorder Traversal
- LeetCode Construct Binary Tree from Preorder and Inorder Traversal
- leetcode 109: Construct Binary Tree from Preorder and Inorder Traversal
- 【leetcode】Construct Binary Tree from Preorder and Inorder Traversal
- BZOJ-2995&&2480&&3239 同余方程&Mod&Discrete Logging 拓展BSGS算法
- 给TextView加背景
- BestCoder Round #77 (div.2) -xiaoxin juju needs help(杨辉三角)
- An internal error occurred during: "Add Deployment". Container with path org.eclipse.jdt.launching.
- java.lang.NoClassDefFoundError: org/hibernate/Session
- lintcode:Construct Binary Tree from Preorder and Inorder Traversal
- utf-8与utf-8无BOM的区别
- java队列、栈和多线程结合使用的例子
- framebuffer 测试程序 arm linux 6410 2440 2416
- 抽象类与接口有什么区别
- hdoj--1087--Super Jumping! Jumping! Jumping!(最长上升序列)
- Android.Camera2相机超详细讲解
- 传纸条
- 数组array和vector的比较