题目:
给定一棵二叉树的头节点head,求这颗二叉树的最小深度。
举例:
思路:
对二叉树进行遍历,在遍历过程中找到所有的叶节点,并且再找到叶系欸但的时候能得到这个叶节点的高度。
代码实现:
//二叉树的最小深度
public static int minDepth(Node head) {
if(head == null) {
return 0;
}
return process(head, 1);
}
public static int process(Node cur, int level) {
if (cur.left == null && cur.right == null) {
return level;
}
int ans = Integer.MAX_VALUE;
//如果cur有左树,返回cur左树上最矮叶节点高度
if (cur.left != null) {
ans = Math.min(process(cur.left, level + 1), ans);
}
//如果cur有右树,返回cur右树上最矮叶节点高度
if (cur.right != null) {
ans = Math.min(process(cur.right, level + 1), ans);
}
return ans;
}