1.重建二叉树
注意:pre.length为 1的时候,root不是全局变量,所以写的不是root,而是pre[0] 调试了半天才出来的结果。还有vin.length和pre.length尽量加上。
function reConstructBinaryTree(pre, vin)
{
// write code here
var result = null;
if(pre.length>1){
var root = pre[0]
var rootIndex = vin.indexOf(root);
var leftVin = vin.slice(0,rootIndex);
var rightVin = vin.slice(rootIndex+1,vin.length);
pre.shift();
var leftPre = pre.slice(0,leftVin.length);
var rightPre = pre.slice(leftVin.length,pre.length);
result = {
val:root,
left:reConstructBinaryTree(leftPre,leftVin),
right:reConstructBinaryTree(rightPre,rightVin)
}
}else if(pre.length==1){
result = {
val:pre[0],
left:null,
right:null
}
}
return result;
} 2.二叉树的镜像
/* function TreeNode(x) {
this.val = x;
this.left = null;
this.right = null;
} */
function Mirror(root)
{
if(root==null) {return null;}
if(root.left==null&&root.right==null){
return null;
}
var temp = root.left;
root.left = root.right;
root.right = temp;
if(root.left){
Mirror(root.left)
}
if(root.right){
Mirror(root.right);
}
}
3.从上往下打印二叉树
需要借助一个栈来实现效果
/* function TreeNode(x) {
this.val = x;
this.left = null;
this.right = null;
} */
function PrintFromTopToBottom(root)
{
// write code here
var arr = [];
var data = [];
if(root!==null){
arr.push(root)
}
while(arr.length!=0){
var node = arr.shift();
if(node.left!=null){
arr.push(node.left)
}
if(node.right!=null){
arr.push(node.right)
}
data.push(node.val);
}
return data;
}
4
5
5

京公网安备 11010502036488号