Construct Binary Tree from Preorder and Inorder Traversal
来源:互联网 发布:java面试造假 编辑:程序博客网 时间:2024/06/05 08:26
递归,时间复杂度O(n)(此处有疑问?),空间复杂度O(logN)。代码如下:
class Solution {public: TreeNode *buildTree(vector<int> &preorder, vector<int> &inorder) { return buildTree1(preorder, inorder, 0, 0, preorder.size()); } TreeNode *buildTree1(vector<int> &preorder, vector<int> &inorder, int begin1, int begin2, int len) { if(len == 0) return NULL; TreeNode *left, *right, *rootNode; int root = preorder[begin1]; int index = begin2; for(; index<begin2+len; ++index) { if(inorder[index] == root) { rootNode = new TreeNode(root); rootNode->left = buildTree1(preorder, inorder, begin1+1, begin2, index-begin2); rootNode->right= buildTree1(preorder, inorder, begin1+(index-begin2)+1, index+1, len-(index-begin2)-1); return rootNode; } } }};
9.02最新代码: 注意细节,数组边界条件
class Solution {public: TreeNode *buildTree(vector<int> &preorder, vector<int> &inorder) { const int n = preorder.size(); if(n == 0) return NULL; return build(preorder, inorder, 0, 0, n); } TreeNode *build(vector<int> &preorder, vector<int> &inorder, int sp, int si, int len) { if(len<=0) return NULL; TreeNode *root = new TreeNode(preorder[sp]); for(int i=0; i<len; i++) { if(preorder[sp] == inorder[si+i]) { root->left = build(preorder, inorder, sp+1, si, i); root->right = build(preorder, inorder, sp+i+1, si+i+1, len-i-1); return root; } } }};
0 0
- *(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
- 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
- Construct Binary Tree from Preorder and Inorder Traversal
- Works applications 2014笔试题(1)
- C++中,函数名前的const和函数名后的const的区别
- 【ORACLE RAC】修改归档位置: FRA和其他位置
- 【二叉树是否对称】Symmetric Tree
- hdu4396 多状态spfa
- Construct Binary Tree from Preorder and Inorder Traversal
- ubuntu apache 服务器 文件下载
- MSTP域
- BAT 批处理脚本 教程
- 开源项目(库)之boost::asio学习(一)
- 使用位运算计算加减乘除四则运算
- hdu 4539 状态压缩DP
- linux进程组、会话和守护进程
- td内容较多,造成table变形