Construct Binary Tree from Inorder and Postorder Traversal
来源:互联网 发布:淘宝格子铺网址 编辑:程序博客网 时间:2024/05/29 07:37
通过中序和后序建立一个二叉树(或前序和中序),递归解法三点要注意的:
1.不要new新的vector来存储左子树和右子树的中序和后序序列,这样做容易Memory Limit Exceeded
2.构造新函数的时候参数值要记得用引用,要不然也会Memory Limit Exceeded
3.弄清楚左子树(右子树)的中序(后序)的起始点和终止点的下标
/** * 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() == 0 || postorder.size() == 0 || inorder.size() != postorder.size()){ return NULL; } return buildTree(inorder, 0, inorder.size() - 1, postorder, 0, postorder.size() - 1); } TreeNode *buildTree(vector<int> &inorder, int in_start, int in_end, vector<int> &postorder, int post_start, int post_end){ if(in_start > in_end || post_start > post_end) return NULL; int i, j; int val = postorder.at(post_end); TreeNode *root = new TreeNode(val); for(i = in_start; i <= in_end; i++){ if(inorder.at(i) == val) break; } TreeNode *left = buildTree(inorder, in_start, i - 1, postorder, post_start, post_start + i - in_start - 1); TreeNode *right = buildTree(inorder, i + 1, in_end, postorder, post_start + i - in_start, post_end - 1); root -> left = left; root -> right = right; return root; }};
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
- 何为组件?
- 黑马程序员---01为什么要内存管理?
- arm-linux内核start_kernel之前启动分析(2)- 页表的准备
- Win32编程中一些实用的函数
- 开门大吉
- Construct Binary Tree from Inorder and Postorder Traversal
- 数据存储:Internal Storage与Shared Preferences
- VC调用matlab初级篇
- ARM Linux 3.x的设备树(Device Tree)
- oracle dblink调整密码
- 第十三周项目四 数组的排序(3) 函数的模板
- 分治法实现快速排序算法
- 黑马程序员——Java基础---异常
- 楼天城楼教主的acm心路历程(作为励志用)