问题描述
https://leetcode.com/problems/minimum-depth-of-binary-tree/
解决思路
- 临界条件:root == null
- 递归公式:返回左右子树最小的那个,长度加1(因为还有root自己)
- 特殊状态:左右子树有一个为空树,则应该返回另一边的子树,因为深度并不在此处停止计算
代码
/**
* 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);
}
}
}
小感想
对于树的问题,还是用递归解决最方便。