怎样实现重建python二叉树
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,今天就跟大家聊聊有关怎样实现重建python二叉树,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。题目:输入某二叉树的前序遍历和中序遍历的结果,
千家信息网最后更新 2026年11月01日怎样实现重建python二叉树
今天就跟大家聊聊有关怎样实现重建python二叉树,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
题目:
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
思路:
看到这个题目就明白需要花点时间,上数据结构课的时候,明白了怎么根据前序和中序可以唯一确定一颗二叉树,并且也知道怎么重建,但是要用代码实现起来,还是有点困难,毕竟自己很久没有写了。我知道要实现那种思路,肯定需要借用递归或者归并。但是不是理的很清,后面觉得借鉴别人怎么实现的,看完之后,决定自己动手,最开始用java编写,写完之后,出现空指针异常和数组非法访问错误,与别人代码对了很久,最后终于找到错误了,这个题困了我一天。对于空指针异常,自己建立对象或者声明数组的时候最好还是初始化,不要等到后面才想起,数组非法访问是由于自己声明的数组太大,没有很严谨,导致我前面一直找不到自己错在哪,感觉没有越界,把数组大小严格改到题目要求所需之后,就提交成功了,可能之前写C语言写习惯了,没有注意这方面,以后还是严谨一点。用js代码实现比Java要方便很多,比较顺利,虽然也出现错误,但是解决了java坑之后,来解决Js的坑就快很多了;
对于这种题目,主要还是想清楚怎么用递归实现,注意细节
java实现代码:
public class Solution {
public TreeNode reConstructBinaryTree(int [] pre,int [] in) {
int len=in.length;
if(len==0)
return null;
TreeNode tree=new TreeNode(pre[0]);
int i,temp=-1,j=0;
for(i=0;i if(pre[0]==in[i]){
temp=i;
break;
}
}
int[] left=new int[temp];
int[] leftpre=new int[temp];
for(i=0;i left[i]=in[i];
leftpre[i]=pre[i+1];
}//左子树
int[] right=new int[len-temp-1];
int[] rightpre=new int[len-temp-1];
for(i=temp+1;i right[j]=in[i];
rightpre[j]=pre[i];
j++;
}//右子树
tree.left=reConstructBinaryTree(leftpre,left);
tree.right=reConstructBinaryTree(rightpre,right);
return tree;
} JavaScript实现代码:
/* function TreeNode(x) {
this.val = x;
this.left = null;
this.right = null;
} */
function reConstructBinaryTree(pre, vin)
{
var len=vin.length;
if(len==0)
return null;
var tree=new TreeNode(pre[0]);
var i,temp=-1,j=0;
for(i=0;i if(pre[0]==vin[i]){
temp=i;
break;
}
}
var left=new Array(temp);
var leftpre=new Array(temp);
for(i=0;i left[i]=vin[i];
leftpre[i]=pre[i+1];
}//左子树
var right=new Array(len-temp-1);
var rightpre=new Array(len-temp-1);
for(i=temp+1;i right[j]=vin[i];
rightpre[j]=pre[i];
j++;
}//右子树
tree.left=reConstructBinaryTree(leftpre,left);
tree.right=reConstructBinaryTree(rightpre,right);
return tree;
// write code here
} 看完上述内容,你们对怎样实现重建python二叉树有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
代码
数组
还是
题目
子树
内容
错误
输入
严谨
序列
思路
指针
时候
结果
递归
清楚
困难
成功
对了
大小
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
天津市摩尔互联网科技
A股互联网金融科技公司
互联网科技媒体
深圳齐家互联网科技
无线互联网科技
哈尔滨秒房互联网科技有限公司
互联网校园科技培训
互联网还是高科技吗
世界互联网科技公司市值排名
玉溪互联网科技怎么选
四川慕妮娅互联网科技有限公司
明优互联网科技有限公司
众安科技工业互联网合作
云南省自由互联网科技有限公司
互联网科技资金流入
互联网科技平台产品运营
易租星互联网科技有限公司
北京天晋互联网科技有限公司
安徽零酒互联网科技有限公司
互联网科技创新方面的资料
朗新科技与工业互联网
奇酷互联网络科技公司
火传媒上海互联网科技
多迪互联网科技有限公司
中国最先进互联网科技公司
河南猎农互联网科技有限公司
青海科技产业互联网发展
江苏苏星互联网科技有限公司
湖北辰鑫科技互联网
广西泛欧互联网科技有限公司