LeetCode 104. 二叉树的最大深度

假装没事ソ 提交于 2020-08-16 01:51:01

我的LeetCode:https://leetcode-cn.com/u/ituring/

我的LeetCode刷题源码[GitHub]:https://github.com/izhoujie/Algorithmcii

LeetCode 104. 二叉树的最大深度

题目

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

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

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

示例:

给定二叉树 [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7
返回它的最大深度 3 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路

思路1-递归计算最深的子树

思路解析:因为树的深度是以最底层的叶子节点计算的,所以递归计算左右子树,若不是叶子节点就将深度+1并递归处理,由于左右子树都在递归,所以要求两者的最大值;
步骤:

  1. 左右子树递归,递归时,遇到非叶子节点就将深度+1并递归下层节点;
  2. 最终返回左右子树深度值较大的即为树的最大深;

算法复杂度:

  • 时间复杂度: $ {\color{Magenta}{\Omicron\left(n\right)}} $
  • 空间复杂度: $ {\color{Magenta}{\Omicron\left(n\right)}} $

算法源码示例

package leetcode;

/**
 * @author ZhouJie
 * @date 2020年1月11日 下午8:25:09 
 * @Description: 104. 二叉树的最大深度
 *
 */
public class LeetCode_0104 {

}

// Definition for a binary tree node.
class TreeNode_0104 {
	int val;
	TreeNode_0104 left;
	TreeNode_0104 right;

	TreeNode_0104(int x) {
		val = x;
	}
}

class Solution_0104 {
	/**
	 * @author: ZhouJie
	 * @date: 2020年5月22日 下午9:13:14 
	 * @param: @param root
	 * @param: @return
	 * @return: int
	 * @Description: 1-递归计算;
	 *
	 */
	public int maxDepth(TreeNode_0104 root) {
		return root == null ? 0 : Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;
	}
}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!