SOURCE

function treeDepth(root) {
    if(!root) return 0;
    let depth = 1;
    let queue = new Array();
    queue.push(root);
    while(queue.length > 0) {
        let qSize = queue.length;
        for(let i = 0; i < qSize; i ++) {
            let element = queue.pop();
            if(element.left == null && element.right == null) {
                return depth;
            } 
            if(element.left) {
                queue.push(element.left)
            }
            if(element.right) {
                queue.push(element.right)
            }
        }
        depth ++;
    }
}

function treeMinDepth(tree) {
    if(!tree || tree.length == 0) return 0;
    let depth = 1;
    let queue = [0];
    while(queue.length > 0) {
        let qSize = queue.length;
        for(let i = 0; i < qSize; i ++) {
            let currentIndex = queue.shift();

            if((tree.length < 2*currentIndex + 1 || tree[2*currentIndex + 1] == null)
                && (tree.length < 2*currentIndex + 2 || tree[2*currentIndex + 2] == null)) {
                return depth;
            } 
            if(tree.length > 2*currentIndex + 1 && tree[2*currentIndex + 1] != null) {
                queue.push(2*currentIndex + 1)
            }
            if(tree.length > 2*currentIndex + 2 && tree[2*currentIndex + 2] != null) {
                queue.push(2*currentIndex + 2)
            }
        }
        depth ++;
    }
}

//                          0
//                         / \
//                       1     2
//                      /     / \
//                     3     5   6
//                          / \
//                         11 12
//

let minDepthOfTree = treeMinDepth([0,1,2,3,null,5,6, null, null, null, null, 11, 12])
console.log("minDepthOfTree = " + minDepthOfTree)


function treeMaxDepth(tree) {
    if(!tree || tree.length == 0) return 0;
    let depth = 0;
    let queue = [0];
    while(queue.length > 0) {
        let qSize = queue.length;
        for(let i = 0; i < qSize; i ++) {
            let currentIndex = queue.shift();

            // if((tree.length < 2*currentIndex + 1 || tree[2*currentIndex + 1] == null)
            //     && (tree.length < 2*currentIndex + 2 || tree[2*currentIndex + 2] == null)) {
                
            //     continue
            // } 
            if(tree.length > 2*currentIndex + 1 && tree[2*currentIndex + 1] != null) {
                queue.push(2*currentIndex + 1)
            }
            if(tree.length > 2*currentIndex + 2 && tree[2*currentIndex + 2] != null) {
                queue.push(2*currentIndex + 2)
            }
        }
        depth ++;
    }
    return depth;
}

//                          0
//                         / \
//                       1     2
//                      /     / \
//                     3     5   6
//                          / \
//                         11 12
//

let maxDepthOfTree = treeMaxDepth([0,1,2,3,null,5,6, null, null, null, null, 11, 12])
console.log("maxDepthOfTree = " + maxDepthOfTree)
console 命令行工具 X clear

                    
>
console