代码随想录Day21

LeetCode111.给定一个二叉树,找出其最小深度。

最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

说明: 叶子节点是指没有子节点的节点。

示例:

给定二叉树 [3,9,20,null,null,15,7],

 

 最小深度为2

前序遍历和后序遍历都可以做。 

后序遍历,从下往上遍历求高度,不断地往上返回到根节点做+1操作。

整体的逻辑代码:

复制代码
class Solution {
public:
    int getDepth(TreeNode* node) {
        if (node == NULL) return 0;
        int leftDepth = getDepth(node->left);           //
        int rightDepth = getDepth(node->right);         ////// 当一个左子树为空,右不为空,这时并不是最低点   //取右子树的最小高度
        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;
    }

    int minDepth(TreeNode* root) {
        return getDepth(root);
    }
};
复制代码

左右中。  终止条件是当前节点为空。否则,一直往下遍历遍历到最下面一层,然后往回返值。  只要还有叶子节点存在,就仍要进行遍历操作。

最小值的计算是去左右深度的最小值+1

 

posted @   NobodyHero  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
点击右上角即可分享
微信分享提示