104. 二叉树的最大深度

Posted jesseywang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了104. 二叉树的最大深度相关的知识,希望对你有一定的参考价值。

题目描述: 给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明:叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],返回深度为3

  • 深度优先遍历:先序遍历,可递归,可用栈
//C 递归

int maxDepth(struct TreeNode* root){
    if(root == NULL) return 0;
    else if(root -> left == NULL && root -> right == NULL) return 1;
    else {
        int lheight = 0, rheight = 0;
        lheight = maxDepth(root -> left);
        rheight = maxDepth(root -> right);
        return lheight > rheight ? lheight + 1 : rheight + 1;
    }
    
}

//栈

  

  • 层次优先遍历:二叉树的高度即二叉树层数,使用lastNode遍历记录每一层的最后一个结点,使用curNode遍历记录当前遍历到的结点,当出栈结点和lastNode相同时证明已经遍历到每一层的最后一个结点了,层数加一,更新lastNode位curNode。
//JS

var maxDepth = function(root) {
    if(!root) return 0;
    let level = 0, queue = [], lastNode, curNode, node;
    queue.push(root);
    lastNode = root;
    while(queue.length != 0){
        node = queue.shift();
        if(node.left) {
            queue.push(node.left);
            curNode = node.left;
        }
        if(node.right) {
            queue.push(node.right);
            curNode = node.right;
        }
        if(lastNode == node) {
            level++;
            lastNode = curNode;
        }
    }
    return level;
};

  

 

以上是关于104. 二叉树的最大深度的主要内容,如果未能解决你的问题,请参考以下文章

java刷题--104二叉树的最大深度

LeetCode第104题—二叉树的最大深度—Python实现

Leetcode题目104.二叉树的最大深度(DFS+BFS简单)

⭐算法入门⭐《二叉树》简单04 —— LeetCode 104. 二叉树的最大深度

[LeetCode] 104. 二叉树的最大深度

Leetcode104. 二叉树的最大深度(dfs)