Construct Binary Tree from Preorder and Inorder Traversal
来源:互联网 发布:读写加密锁软件 编辑:程序博客网 时间:2024/04/30 23:17
题目大意:给定二叉树前序遍历和后序遍历的两个序列,要求通过这两个序列还原出二叉树
解题思路:递归求每个子树的根节点
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: TreeNode *buildTree(vector<int> &preorder, vector<int> &inorder) { if(preorder.size() != inorder.size()) { return NULL; } int startIndex = 0; return buildTreeAssist(preorder, startIndex, inorder, 0, inorder.size() - 1); }private: TreeNode *buildTreeAssist(vector<int> &preorder, int &pstartIndex, vector<int> &inorder, int istartIndex, int iendIndex) { if(pstartIndex >= preorder.size()) { return NULL; } if(istartIndex > iendIndex || iendIndex >= inorder.size()) { return NULL; } int index = istartIndex; while(index <= iendIndex) { if(inorder[index] == preorder[pstartIndex]) { break; } index++; } if(index > iendIndex) { return NULL; } TreeNode *root = new TreeNode(preorder[pstartIndex]); if(istartIndex <= index - 1) { pstartIndex++; root->left = buildTreeAssist(preorder, pstartIndex, inorder, istartIndex, index - 1); } if(index + 1 <= iendIndex) { pstartIndex++; root->right = buildTreeAssist(preorder, pstartIndex, inorder, index + 1, iendIndex); } 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
- 0000_0000_0000_0100.Optional<T> 可选类型闲谈
- Java习惯用法总结
- [LoadRunner]初识LoadRunner12之VuGen
- casperjs在windows下抓取元素乱码
- 使用哈希加盐法来为密码加密
- Construct Binary Tree from Preorder and Inorder Traversal
- Android:防止过快点击造成多次事件
- xcode查看函数调用
- 人生苦短,我用Python 学习笔记——第四天
- hdu 1053 Entropy(霍夫曼树)
- (2.1.12)java之反射机制
- 第7题
- thinking in java 第三天
- MongoDB3.0 新特性