重构二叉树Java,java根据数组建立二叉树
标题:输入二叉树的一阶遍历和中阶遍历的结果。请重建二叉树。假设输入的前序遍历和中序遍历的结果不包含重复的数字。比如你输入一阶遍历序列{1,2,4,7,3,5,6,8}和中阶遍历序列{4,7,2,1,5,3,8,6},你会重新构建二叉树并返回。
解决方案分析:
1.根据前导遍历第一个节点以确定根节点。
2.在中序遍历中找到根节点,确定左子树和右子树的长度。
3.根据长度在前序遍历中选择左子树前序遍历和右子树前序遍历,中序遍历选择左子树前序遍历和右子树前序遍历。
4.递归左子树和右子树,并将左子树根节点和右子树根节点分配给根节点。
免费视频教程推荐:java学习
代码:
/**
*二叉树的定义
*公共类TreeNode {
* int val
* TreeNode left
* TreeNode right
* TreeNode(int x){ val=x;}
* }
*/
导入Java . util . *;
公共类解决方案{
public TreeNode reConstructBinaryTree(int[]pre,int [] in) {
if(前长度==0 内长度==0) {
返回null
}
TreeNode root=new TreeNode(pre[0]);
for(int I=0;I英寸长度;i ) {
if(in[i]==pre[0]) {
root . left=reConstructBinaryTree(arrays . copyofrage(pre,1,i 1),arrays . copyofrage(in,0,I));
root . right=reConstructBinaryTree(arrays . copyofrage(pre,i 1,pre.length)
,arrays . copyofrage(in,i 1,in . length));
}
}
返回根目录;
}
}更多相关文章教程推荐:java编程入门以上是如何用java重建二叉树的细节。请多关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。