最小深度是指树的根结点到最近叶子结点的最短路径上结点的数量。
解法一:递归
1、最开始想到每一个父亲节点的最小深度都是其子节点最小深度数加一。
2、当本节点为空时,返回深度0;
3、当本节点的左孩子和右孩子为空的时候,返回深度1;
4、当左孩子为空,右孩子非空时,返回右孩子的最小深度加一
5、当右孩子为空,左孩子非空的时候,返回左孩子的最小深度加一
6、最后一种为左右孩子都非空的情况,返回左右孩子最小深度的小值加一。
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public int run(TreeNode root) {
if(root == null)
return 0;
if(root.left == null && root.right == null)
return 1;
if(root.left == null)
return run(root.right) + 1;
if(root.right == null)
return run(root.left) + 1;
return Math.min(run(root.left), run(root.right)) + 1;
}
}
解法二:层序遍历