Problem 111

Minimum Depth of Binary Tree

Posted by Ruizhi Ma on August 16, 2019

问题描述

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

解决思路

  1. 临界条件:root == null
  2. 递归公式:返回左右子树最小的那个,长度加1(因为还有root自己)
  3. 特殊状态:左右子树有一个为空树,则应该返回另一边的子树,因为深度并不在此处停止计算

代码

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public boolean isSymmetric(TreeNode root) {
        if(root == null) return true;
        
        return checkNode(root.left, root.right);
    }
    
    public boolean checkNode(TreeNode node1, TreeNode node2){
        if(node1 == null && node2 == null) return true;
        
        if(node1 == null || node2 == null) return false;
        
        if(node1.val != node2.val){
            return false;
        }else{
            return checkNode(node1.left, node2.right) && checkNode(node1.right, node2.left);
        }
    }
}

小感想

对于树的问题,还是用递归解决最方便。