当前位置:网站首页>105. Construct binary tree from preorder and inorder traversal sequence (video explanation!!)
105. Construct binary tree from preorder and inorder traversal sequence (video explanation!!)
2022-07-30 09:54:00 【Learning to pursue high efficiency】
11. (有视频)前序 中序 创建二叉树
Preorder inorder builds the tree
public int preIndex = 0;
private TreeNode buildTreeChild(int[] preorder,int[] inorder,int inbegin,int inend) {
//There is no left tree 或者 There is no right tree
if(inbegin > inend) {
return null;
}
TreeNode root = new TreeNode( preorder[preIndex]);
//找到当前根节点 在中序遍历中的位置
int rootIndex = findInorderIndex(inorder, preorder[preIndex],inbegin,inend);
preIndex++;
root.left = buildTreeChild(preorder,inorder,inbegin,rootIndex-1);
root.right = buildTreeChild(preorder,inorder,rootIndex+1,inend);
return root;
}
private int findInorderIndex(int[] inorder,int val,int inbegin,int inend) {
for(int i = inbegin;i <= inend;i++) {
if(inorder[i] == val) {
return i;
}
}
return -1;
}
public TreeNode buildTree(int[] preorder, int[] inorder) {
return buildTreeChild(preorder,inorder,0,inorder.length-1);
}
1. 递归函数的参数
- 前序遍历数组,后序遍历数组
- 后序遍历的 Demarcation corner marker
2. The effect of each recursion:创建当前节点(前序)构建左右节点(后序)返回当前节点
TreeNode root = new TreeNode( preorder[preIndex]);
//找到当前根节点 在中序遍历中的位置
int rootIndex = findInorderIndex(inorder, preorder[preIndex],inbegin,inend);
preIndex++;
root.left = buildTreeChild(preorder,inorder,inbegin,rootIndex-1);
root.right = buildTreeChild(preorder,inorder,rootIndex+1,inend);
return root;
3. Build the left tree first,Then build the right tree(pre-order Traverse to the left tree)
root.left = buildTreeChild(preorder,inorder,inbegin,rootIndex-1);
root.right = buildTreeChild(preorder,inorder,rootIndex+1,inend);
边栏推荐
猜你喜欢
Google Cloud Spanner的实践经验
Access to display the data
【云原生】Kubernetes入门详细讲解
九九乘法表
Using IN in MySQL will not go through index analysis and solutions
仿牛客网项目第二章:开发社区登录模块(详细步骤和思路)
leetcode 剑指 Offer 46. 把数字翻译成字符串
Two solutions for Excel xlsx file not supported
Jenkins 如何玩转接口自动化测试?
An article to understand service governance in distributed development
随机推荐
leetcode 剑指 Offer 52. 两个链表的第一个公共节点
日志导致线程Block的这些坑,你不得不防
(文字)无框按钮设置
conda 导出/导出配置好的虚拟环境
读书笔记:《这才是心理学:看穿伪心理学的本质(第10版)》
图像分析:投影曲线的波峰查找
debian10安装djando
leetcode 剑指 Offer 47. 礼物的最大价值
leetcode 剑指 Offer 25. 合并两个排序的链表
Integral Topic Notes - Path Independent Conditions
leetcode 剑指 Offer 10- II. 青蛙跳台阶问题
342 · Valley Sequence
69. Sqrt(x)x 的平方根
元宇宙改变人类工作模式的四种方式
Google Cloud Spanner的实践经验
最长公共序列、串问题总结
els 方块向左移动
怎么在本地电脑上运行dist文件
leetcode 剑指 Offer 15. 二进制中1的个数
团队级敏捷真的没你想的那么简单