The depth of the binary tree of the JS algorithm

The depth of the binary tree of the JS algorithm

//例子[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))

Guess you like

Origin blog.csdn.net/qq_51649346/article/details/124786337