重构二叉树Java,java根据数组建立二叉树

  重构二叉树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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: