提示:要与求二叉树的最大深度区别开,明确叶子节点的概念。
文章目录
- 递归三部曲
- 区别
1.递归三部曲:
- 确定函数体
- 明确终止条件
- 确定单层循环逻辑顺序
首先叶子节点是指左右孩子为空的节点,所以我们的终止条件为
if (node == NULL) return 0;
不用if(node->right==NULL&&node->left==NULL)是为了明确顺序,一般针对的都是本层的元素,而不是下一层。
逻辑顺序为:左右中(不唯一
int leftDepth = getDepth(node->left);
int rightDepth = getDepth(node->right);
区别:
注意,当左子树为空的,右子树不为空的时候,最小深度是右子树的深度+1。同样的右子树为空的时候,左子树不为空的时候,就是左子树的深度+1
(仔细看叶子节点的含义!)
if (node->left == NULL && node->right != NULL) {
return 1 + rightDepth;
}
// 当一个右子树为空,左不为空,这时并不是最低点
if (node->left != NULL && node->right == NULL) {
return 1 + leftDepth;
}
int result = 1 + min(leftDepth, rightDepth);
return result;