LeetCode:Maximun Depth of Binary Tree二叉树深度

本文对比了深度优先搜索(DFS)和广度优先搜索(BFS)在解决树结构深度求解问题时的原理、实现方式及性能差异,并通过代码示例展示了两种算法的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主要思路:
(1)深度优先搜索DFS;
(2)递归需要考虑的问题(递归结束条件,递归返回值)
(3)算法简单,性能一般。

P.S.当然,这种求深度的题完全可以用广度优先搜索BFS来做,不过需要引入队列,实现起来更容易理解一些。

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public int maxDepth(TreeNode root){
    return helper(root, 0);
}

public int helper(TreeNode root, int depth){
    if(root == null) return depth;//递归结束条件
    return Math.max(helper(root.left, depth + 1), helper(root.right, depth + 1));//深度优先DFS
}
}

BFS实现:

struct TreeNode {
    int            val;
    TreeNode*    left;
    TreeNode*    right;
    TreeNode(int x): val(x), left(NULL),right(NULL) {}
};

//采用BFS的方法,引入队列
int maxDepth(TreeNode *root)
{
    if (NULL == root)
        return 0;
    queue <TreeNode *> que;
    int nCount = 1;
    int nDepth = 0;// 记录队列里面每一层上的元素

    que.push(root);
    while(!que.empty()) {
        TreeNode *pTemp = que.front();
        que.pop();
        nCount --;

        if (pTemp->left)
            que.push(pTemp->left);
        if (pTemp->right)
            que.push(pTemp->right);

        if (nCount == 0) {
            nDepth ++;
            nCount = que.size();
        }
    }
    return nDepth;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值