//例子[1,2,3,4,5,6]
// 4
// / \
// 2 5
// /\ \
// 1 3 6
// 这个树的深度就是3
//
var tree={
val:4, //根节点
left:{
val:2, //结点的值
left:{
val:1,
left:null,
right:null,
},
right:{
val:3,
left:null,
right:null,
}
},
right:{
val:5,
left:null,
right:{
val:6,
left:null,
right:null,
},
},
}
// 递归
var maxtree =function(root){//root传进来的就是树
if(root==null)
return 0;
var leftDepth=maxtree(root.left)+1;//递归判断左边的深度
var rightDepth=maxtree(root.right)+1;//递归判断右边的深度
return Math.max(leftDepth,rightDepth);
}
console.log(maxtree(tree))
// 层次遍历
var max=function(root){
var max=0;//计数,记录深度
var queue=[root]//判断树是否为空
if(root==null)
return 0;
while(queue.length){
var arr=[];
for(var i=0;i<queue.length;i++){//遍历当前层数树
//按层数来遍历,把同一层的左右子树放进一个数组
if(queue[i].left!=null){
arr.push(queue[i].left)
}
if(queue[i].right!=null){
arr.push(queue[i].right)
}
}
max++;
queue=arr;
}
return max;//返回深度
}
console.log(max(tree))
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)