2020年7月28日 二叉树的最大深度 maxDepth
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int maxDepth(TreeNode root) {
}
}
解题思路:
递归+动态规划
这道题中树中的数值没有意义,我们直接用深度来替换他。
递归:输入一个节点,该节点的深度等于符节点的深度+1。如果是叶子节点,返回该节点的深度,如果是有子节点,那么返回递归这个子节点,返回子节点的值(两个里面最大的那个)。
代码实现:
public int maxDepth(TreeNode root) {
return maxDepth2(root,0 );
}
public int maxDepth2(TreeNode root,int i) {
//如果该节点为空节点,返回长度-1
if(root==null)
return i;
//如果没有子节点,返回长度
if (root.left==null&&root.right==null)
return i+1;
return Integer.max(maxDepth2(root.left,i+1),maxDepth2(root.right,i+1));
}