LeetCode
来源:互联网 发布:淘宝店如何装修 编辑:程序博客网 时间:2024/06/18 05:28
Given inorder and postorder traversal of a tree, construct the binary tree.
Note:
You may assume that duplicates do not exist in the tree.
给出一棵二叉树的中根遍历和后根遍历,求这棵树。
基本思路:我们有in和post数组长度都为7,那么我们可以知道post[6]是根。找到post[6]对应in中的位置,假设是in[3]。那么可以得出in[0]~in[2]为左子树,in[4]~in[6]为右子树。同理继续向下递归。
/** * Definition for a binary tree node. * 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) { return solve(0, postorder.size()-1, 0, inorder.size()-1, inorder, postorder); } TreeNode* solve(int post, int poed, int inst, int ined, vector<int>& inorder, vector<int>& postorder) { if (inst > ined || post > poed) return NULL; TreeNode* cur = new TreeNode(postorder[poed]); int index = 0; for (int i = inst; i <= ined; ++i) { if (inorder[i] != cur->val) continue; index = i; break; } cur->left = solve(post, poed-(ined-index+1), inst, index-1, inorder, postorder); cur->right = solve(post+(index-inst), poed-1, index+1, ined, inorder, postorder); return cur; }};
阅读全文
0 0
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode
- leetcode:
- leetcode:
- LeetCode
- leetcode
- LEETCODE
- leetcode
- leetCode
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode:
- leetcode
- 2017 Multi-University Training Contest
- 51nod1076 2条不相交的路径
- [编程题] 庆祝61
- POJ-3494--Largest Submatrix of All 1’s---单调栈的应用
- java IO流(一) --字节流
- LeetCode
- spring学习----bean实例化
- IDEA和mysql版本的问题
- 技术文章|治疗IT架构“僵硬症” 几款工具提高数字化转型效率
- js判断滚动条是否滚到底部
- ThinkPHP5 动态连接数据库
- react native TimePickerAndroid详解
- 同步类容器与并发类 容器
- 整数算法训练01—统计1~n有多少个9