leetcode104. 二叉树的最大深度(递归和层次遍历两种方法解决)

题目:leetcode104. 二叉树的最大深度

描述

给定一个二叉树 root ,返回其最大深度。

二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。
在这里插入图片描述

思路

首先代码最少的肯定是递归,先求出左子树的深度,再求出右子树的深度,然后返回这两个数的最大值,如果当前节点是null,则返回0。
其次就是层次遍历,层次遍历要求设置一个队列,不断循环。

递归

public class Solution {
    public int maxDepth(TreeNode root) {
        if(root==null)
            return 0;
        int d1=0,d2=0;
         d1+=maxDepth(root.left);
         d2+=maxDepth(root.right);
        return d1>d2?(d1+1):(d2+1);
    }
}

层次遍历


import java.util.Deque;
import java.util.LinkedList;

public class Solution {
    public int maxDepth(TreeNode root) {
        if(root==null)
            return 0;
        int depth=0;
        int length;
        Deque<TreeNode> deque=new LinkedList();
        deque.offer(root);
        while(!deque.isEmpty())
        {
            length=deque.size();
            depth++;
            TreeNode node;
            while(length>0)
            {
                node=deque.poll();
                if(node.left!=null)
                    deque.offer(node.left);
                if(node.right!=null)
                    deque.offer(node.right);
                length--;
            }
        }
        return depth;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

就是木子呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值