LeetCode
来源:互联网 发布:青少年行知实践园的题 编辑:程序博客网 时间:2024/06/05 06:02
Given preorder and inorder traversal of a tree, construct the binary tree.
Note:
You may assume that duplicates do not exist in the tree.
给出一棵树的先根遍历和中根遍历,求这棵树。
这题放了一阵子才拿出来做,发现没有想象中那么可怕。
基本思想是:我们有pre和in两个数组长度都为7,那么我们可以知道pre[0]是根。找到pre[0]对应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>& preorder, vector<int>& inorder) { return solve(0, 0, inorder.size()-1, preorder, inorder); } TreeNode* solve(int prest, int inst, int ined, vector<int>& preorder, vector<int>& inorder) { if (inst > ined) return NULL; TreeNode* cur = new TreeNode(preorder[prest]); int index = 0; for (int i = inst; i <= ined; ++i) {//在inorder中哪个位置 if (preorder[prest] != inorder[i]) continue; index = i; break; } cur->left = solve(prest+1, inst, index-1, preorder, inorder); cur->right = solve(prest+index-inst+1, index+1, ined, preorder, inorder); return cur; }};
阅读全文
0 0
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode
- leetcode:
- leetcode:
- LeetCode
- leetcode
- LEETCODE
- leetcode
- leetCode
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode:
- leetcode
- Android Studio(2.3.3)配置Kotlin笔记
- java基础复习--复习总结1
- 项目框架总结
- 【LeetCode】150. Evaluate Reverse Polish Notation
- iOS json格式转换
- LeetCode
- 矩阵快速幂 hdu1757
- 下载Nexus老版本war包
- 【containerd 1.0 源码分析】containerd-shime 启动流程分析
- 【Python学习系列二十八】绘图库pyecharts
- Linux下线程同步问题中的互斥锁和条件变量
- 微信小程序学习笔记(一)——css小技巧
- Java并发编程实战(学习笔记四 第五章 基础构建模块 上)
- 嵌入式系统调试手段及方法综述