【代码随想录day 14】 力扣 111.二叉树的最小深度
视频讲解:https://www.bilibili.com/video/BV1QD4y1B7e2/?vd_source=a935eaede74a204ec74fd041b917810c
文档讲解:https://programmercarl.com/0111.%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%B0%8F%E6%B7%B1%E5%BA%A6.html
力扣题目:https://leetcode.cn/problems/minimum-depth-of-binary-tree/description/
这道题和求最大深度还有一点不一样,这道题的主要问题是找到最短的叶子节点,重要的是他需要是叶子节点,所以在递归过程中我们需要去判断是不是叶子节点,无非是两种情况1.左空又不空 2.右空左不空,当遇到这两种情况时,长度变为1+left/right,最后比较取最小值。
class Solution {
public:int getDepth(TreeNode *node){//判断终止条件if(!node){return 0;}//开始递归int left=getDepth(node->left);int right = getDepth(node->right);//判断是不是叶子节点if(node->left==NULL && node->right !=NULL){return 1+right;}if(node->left!=NULL && node->right ==NULL){return 1+left;}int result=1+min(right,left);return result;}int minDepth(TreeNode* root) {int result=getDepth(root);return result;}
};