二叉树深度

二叉树的深度

http://www.nowcoder.com/questionTerminal/435fb86331474282a3499955f0a41e8b

二叉树深度

递归法

解法一

function TreeDepth(pRoot)
{
    return TreeWalk(pRoot,0)
 }

function TreeWalk(root,deep){
    if(root){
        return  Math.max(TreeWalk(root.left,deep+1),TreeWalk(root.right,deep+1))
    }
    else return deep
}

解法二

function TreeDepth(pRoot)
{
    if(!pRoot)return 0
    return  Math.max(TreeDepth(pRoot.left)+1,TreeDepth(pRoot.right)+1)
}

非递归解法

function TreeDepth(root){
    if(root == null)return 0;
    let level = [root]
    let result = 0;
    while(level.length){
        result++
        let newLevel = []
        for(let i = 0; i < level.length;i++){
            if(level[i].left)newLevel.push(level[i].left);
            if(level[i].right)newLevel.push(level[i].right);
        }
        level = newLevel;
    }
    return result;
}
全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务