博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
重建二叉树(四)
阅读量:4957 次
发布时间:2019-06-12

本文共 756 字,大约阅读时间需要 2 分钟。

输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。

 

function reConstructBinaryTree(pre, vin){       if(pre.length==0 || vin.length==0){        return null;    }        //前序遍历的第一个节点为根节点    var root=pre[0];        //找到在中序遍历中 根节点的索引    var index=vin.indexOf(root);        //根据根节点索引,可以在中序遍历中,将二叉树分为左子树和右子树    var left=vin.slice(0,index);    var right=vin.slice(index+1);        var node=new TreeNode(root);        //重建的二叉树的左子树和右子树也可以根据上面的步骤推导出来    //左子树是根据前序和中序的左子树推导    //右子树也是根据前序和中序的右子树推导        node.left=reConstructBinaryTree(pre.slice(1,index+1),left);    node.right=reConstructBinaryTree(pre.slice(index+1),right);        return node;}

 

转载于:https://www.cnblogs.com/cmy1996/p/9601125.html

你可能感兴趣的文章
64位UBUNTU下安装adobe reader后无法启动
查看>>
iTextSharp带中文转换出来的PDF文档显示乱码
查看>>
阶乘因式分解(一)
查看>>
qt学习记录-----3.信号与槽的问题
查看>>
『ORACLE』 内置约束(11g)
查看>>
Vue--学习过程中遇到的坑
查看>>
组件:slot插槽
查看>>
.net压缩图片质量(附demo)
查看>>
equals和==的区别
查看>>
Android6.0指纹识别开发
查看>>
java反射机制剖析(二)— Class Loader
查看>>
走进C++程序世界------异常处理
查看>>
通过用户模型,对数据库进行增删改查操作。
查看>>
去除数组中重复的元素
查看>>
Nginx配置文件nginx.conf中文详解(转)
查看>>
POJ 1988 Cube Stacking
查看>>
POJ 1308 Is It A Tree?(并查集)
查看>>
N进制到M进制的转换问题
查看>>
Android------三种监听OnTouchListener、OnLongClickListener同时实现即其中返回值true或者false的含义...
查看>>
MATLAB实现多元线性回归预测
查看>>