重建二叉树
来源:互联网 发布:神曲 译本知乎 编辑:程序博客网 时间:2024/06/16 17:43
题目
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
思路及代码
核心思想:递归
前序遍历:根 左 右
中序遍历:左 根 右
左分支和右分支递归添加根节点
代码1
public class Solution { public TreeNode reConstructBinaryTree(int[] pre, int[] in) { if(pre.length==0||in.length==0) //递归结束 return null; TreeNode t = new TreeNode(pre[0]); int left = 0, right = 0; while (in[left] != pre[0]) { left++; } right = in.length - left; int[] in_left = new int[left]; int[] in_right = new int[right]; int[] pre_left = new int[left]; int[] pre_right = new int[right]; //左分支数组 for (int i = 0; i < left; i++) { in_left[i] = in[i]; pre_left[i] = pre[i + 1]; } t.left = reConstructBinaryTree(pre_left, in_left); //右分支数组 for (int i = 0; i < right; i++) { in_right[i] = in[i + left + 1]; pre_right[i] = pre[i + left + 1]; } t.right = reConstructBinaryTree(pre_right, in_right); return t; }
代码2
链接:https://www.nowcoder.com/questionTerminal/8a19cbe657394eeaac2f6ea9b0f6fcf6来源:牛客网public class Solution { public TreeNode reConstructBinaryTree(int [] pre,int [] in) { TreeNode root=reConstructBinaryTree(pre,0,pre.length-1,in,0,in.length-1); return root; } //前序遍历{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6} private TreeNode reConstructBinaryTree(int [] pre,int startPre,int endPre,int [] in,int startIn,int endIn) { if(startPre>endPre||startIn>endIn) return null; TreeNode root=new TreeNode(pre[startPre]); for(int i=startIn;i<=endIn;i++) if(in[i]==pre[startPre]){ root.left=reConstructBinaryTree(pre,startPre+1,startPre+i-startIn,in,startIn,i-1); root.right=reConstructBinaryTree(pre,i-startIn+startPre+1,endPre,in,i+1,endIn); } return root; }}
阅读全文
0 0
- 3.9重建二叉树
- 重建二叉树
- 二叉树重建
- 二叉树重建
- 二叉树的重建
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 二叉树重建
- 二叉树重建
- 重建二叉树
- 重建二叉树
- 重建二叉树
- JS 概念理解及引用
- CI框架 email类发送邮件
- Asynctask的优缺点
- JQ设置更改属性和属性值
- java 导出excel表格(.xlsx)
- 重建二叉树
- 【asp.net】Web控件-验证控件
- hdu 6034 Balala Power!(贪心)
- JS基本概念
- Activity的简单的跳转回传
- Java简介小结
- [LeetCode]406. Queue Reconstruction by Height
- JavaScript整理1
- bzoj3555——玄学hash