Problem 104

Maximum Depth of Binary Tree

Posted by Ruizhi Ma on August 17, 2019

问题描述

https://leetcode.com/problems/maximum-depth-of-binary-tree/

解决思路

  1. 用递归解决DFS(深度优先)问题。递归的最重要的核心点就是两个:1. 递归出口是什么 2. 递归公式是什么。
    在这里,递归的出口显然是root没有左右孩子;公式则是比较左右孩子最多的节点作为返回值,而找到左右孩子最多的节点有需要调用maxDepth函数本身。
  2. 在使用递归的时候,要假定本身就已经完成了指定的功能,直接拿来递归调用就行了。

问题解惑

一开始不太懂递归,后来临时补了一下递归的基本概念,看了一下斐波那契数列和汉诺塔问题,现在懂一些了,所以不会递归的,可以找视频看看这两个问题,这个就比较好理解了。

代码

/**
 * 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) {
        
        if(root == null){
            return 0;
        }else{
            int left = maxDepth(root.left);
            int right = maxDepth(root.right);
            return Math.max(left, right) + 1;
        }
    }
}

小感想

递归只要知道怎么用,的确很简单,只要知道递归出口和递归公式,剩下的都是重复性的操作。