JS算法之二叉树的深度

JS算法之二叉树的深度,第1张

JS算法之二叉树的深度
//例子[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))

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/939751.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-17
下一篇 2022-05-17

发表评论

登录后才能评论

评论列表(0条)

保存