Construct Binary Tree from Inorder and Postorder Traversal
来源:互联网 发布:邻居树 推荐算法 编辑:程序博客网 时间:2024/06/07 07:02
题目大意:给定中序遍历和后序遍历的两组序列,根据这两组序列,还原出二叉树
解题思路:递归确定每个子树的根
/** * 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> &inorder, vector<int> &postorder) { if(inorder.size() != postorder.size()) { return NULL; } int endIndex = postorder.size() - 1; return buildTree(inorder, 0, inorder.size() - 1, postorder, endIndex); }private: TreeNode *buildTree(vector<int> &inorder, int istartIndex, int iendIndex, vector<int> &postorder, int &endIndex) { if(endIndex < 0 || endIndex >= postorder.size()) { return NULL; } if(istartIndex > iendIndex || iendIndex >= inorder.size() || istartIndex < 0) { return NULL; } int index = istartIndex; while(index <= iendIndex) { if(postorder[endIndex] == inorder[index]) { break; } index++; } if(index > iendIndex) { return NULL; } TreeNode *tmp = new TreeNode(postorder[endIndex]); if(index + 1 <= iendIndex) { endIndex--; tmp->right = buildTree(inorder, index + 1, iendIndex, postorder, endIndex); } if(istartIndex <= index - 1) { endIndex--; tmp->left = buildTree(inorder, istartIndex, index - 1, postorder, endIndex); } return tmp; }};
0 0
- *(leetcode) Construct Binary Tree from Inorder and Postorder Traversal (tree)
- LeetCode[Tree]: Construct Binary Tree from Inorder and Postorder Traversal
- LeetCode: Construct Binary Tree from Inorder and Postorder Traversal
- [LeetCode]Construct Binary Tree from Inorder and Postorder Traversal
- LeetCode Construct Binary Tree from Inorder and Postorder Traversal
- LeetCode: Construct Binary Tree from Inorder and Postorder Traversal
- LeetCode: Construct Binary Tree from Inorder and Postorder Traversal
- Construct Binary Tree from Inorder and Postorder Traversal
- [LeetCode] Construct Binary Tree from Inorder and Postorder Traversal
- LeetCode Construct Binary Tree from Inorder and Postorder Traversal
- [Leetcode] Construct Binary Tree from Inorder and Postorder Traversal
- leetcode 110: Construct Binary Tree from Inorder and Postorder Traversal
- 【leetcode】Construct Binary Tree from Inorder and Postorder Traversal
- Construct Binary Tree from Inorder and Postorder Traversal
- [LeetCode]Construct Binary Tree from Inorder and Postorder Traversal
- Construct Binary Tree from Inorder and Postorder Traversal
- [leetcode]Construct Binary Tree from Inorder and Postorder Traversal
- Construct Binary Tree from Inorder and Postorder Traversal
- linux文本处理三
- 第五周(x,y)
- 网络基本功系列
- c语言 指针数组
- Android 科大讯飞语音识别 金额数字
- Construct Binary Tree from Inorder and Postorder Traversal
- 处理手势操作 动画 自定义视图 创建高级图形 本地化和辅助功能
- 高级串口编程, 使用 ioctl 和 select
- linux下切换用户命令
- 利用并查集求最小生成树
- 每个程序员需掌握的20个代码命名小贴士
- [LinkedIn] Smallest/greatest/largest k element in stream of data (integer array) priority Q / heap
- P52第21题
- JS实现页面跳转 浏览器地址栏保持不变