【tree】【 由中根序遍历与后根序遍历生成树】【由先根序与中根序遍历生成树】
来源:互联网 发布:快讯通 看盘软件 编辑:程序博客网 时间:2024/05/05 19:39
递归思想,找到根节点,问题便分解为左子树与右子树
leetcode 106. Construct Binary Tree from Inorder and Postorder Traversal
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public TreeNode buildTree(int[] inorder, int[] postorder) { int size = inorder.length; if(size==0) return null; return buildTreefromin_post(inorder, 0, size-1, postorder, 0, size-1); } private TreeNode buildTreefromin_post(int[] inorder, int l_in, int r_in, int[] postorder, int l_p, int r_p){ TreeNode root = new TreeNode(0); // System.out.println(l_in); // System.out.println(r_in); root.val = postorder[r_p]; if(l_in==r_in) return root; int mid = 0; for(int k=l_in;k<=r_in;k++){ if(inorder[k]==root.val){ mid = k; break; } } // System.out.println(mid); if(l_in<=mid-1){ root.left = buildTreefromin_post(inorder, l_in, mid-1, postorder, l_p, l_p + mid-1-l_in); } if(mid+1<=r_in){ root.right = buildTreefromin_post(inorder, mid+1, r_in, postorder, r_p-1+mid+1-r_in , r_p-1); } return root; }}
105. Construct Binary Tree from Preorder and Inorder Traversal
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public TreeNode buildTree(int[] preorder, int[] inorder) { int size = inorder.length; if(size==0) return null; return buildTreefromin_post(inorder, 0, size-1, preorder, 0, size-1); } private TreeNode buildTreefromin_post(int[] inorder, int l_in, int r_in, int[] preorder, int l_p, int r_p){ TreeNode root = new TreeNode(0); // System.out.println(l_in); // System.out.println(r_in); root.val = preorder[l_p]; if(l_in==r_in) return root; int mid = 0; for(int k=l_in;k<=r_in;k++){ if(inorder[k]==root.val){ mid = k; break; } } // System.out.println(mid); if(l_in<=mid-1){ root.left = buildTreefromin_post(inorder, l_in, mid-1, preorder, l_p+1, l_p + mid-l_in); } if(mid+1<=r_in){ root.right = buildTreefromin_post(inorder, mid+1, r_in, preorder, r_p+mid+1-r_in , r_p); } return root; }}
阅读全文
0 0
- 【tree】【 由中根序遍历与后根序遍历生成树】【由先根序与中根序遍历生成树】
- 由二叉树先序遍历/后序遍历和中序遍历生成二叉树
- 由前序遍历与中序遍历生成二叉树及二叉树的前序,中序,后续,层序遍历
- 由二叉树前序和中序遍历生成二叉树
- 由树的先序和中序遍历生成树的层序遍历后序遍历
- 由中序与后序遍历得到二叉树
- 二叉树的生成与遍历
- 二叉树的生成与遍历
- 二叉树的生成与遍历
- 二叉树生成与递归遍历
- 图的遍历与最小生成树
- 由前序遍历序列跟中序遍历序列生成二叉树,如果输入序列不正确返回fail~ 如果正确则前序遍历创建的二叉树
- C++先序遍历与中序遍历生成二叉树 后序遍历与中序遍历生成二叉树
- 二叉树:由已知两种遍历求未知遍历
- 由遍历序列得到二叉树
- 由遍历序列构造二叉树
- 由遍历序列构造二叉树
- 由遍历序列还原二叉树结构
- ESP8266 SDK开发篇(一)——环境与烧录
- 如何安装 Compose
- Spring与myBatis整合(18)
- Chrome浏览器如何调试移动端网页信息
- 网络带宽问题探讨
- 【tree】【 由中根序遍历与后根序遍历生成树】【由先根序与中根序遍历生成树】
- 用 Tarjan找最近公共祖先,找最短路
- sublime控制台调试JS
- Numpy知识巩固
- java ---基础(1)
- VBA处理文件框架代码 【第五部分:Excel文件操作】
- Mapper编写的三种方法(19)
- c++类的类型转换函数
- 读书笔记:《世说新语》