LeetCode刷题日记-12

二叉树的最大深度

1.题目描述

给定一个二叉树,找出其最大深度。

二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

说明: 叶子节点是指没有子节点的节点。

示例:
给定二叉树 [3,9,20,null,null,15,7]
在这里插入图片描述
返回它的最大深度 3 。

2.思路

我们可以使用两种方式来进行处理,深度优先遍历和广度优先遍历
深度优先遍历:使用递归的方式往树的下面查找,如果为null则返回0,如果存在则加1
广度优先遍历:使用队列的方式将每一层的节点放到队列中,然后查看这一层每个节点的左右子节点,如果不为null则放到队列中,
当遍历完这一层后,层数加1,当全部遍历完则可以得到最大层数。

3.代码

class Solution {
	//使用深度优先遍历
     public int maxDepth(TreeNode root) {
   		if(root == null){
			return 0;
		}
   		
   		return 1 + Math.max(maxDepth(root.left),maxDepth(root.right));
    }

	//使用广度优先遍历
     public int maxDepth(TreeNode root) {
   		if(root == null){
			return 0;
		}
   		
   		Queue<TreeNode> queue = new LinkedList<TreeNode>();
		int res = 0;
		queue.offer(root);
   		
   		while(!queue.isEmpty()){
			int size = queue.size();
			while(size > 0){
				TreeNode treeNode = queue.poll();
				if(treeNode.left != null){
					queue.offer(treeNode.left);
				}
				if(treeNode.right != null){
					queue.offer(treeNode.right);
				}
				size--;
			}
			res++;
		}
		

		return res;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值