二叉树的最小深度

    xiaoxiao2021-04-12  33

    问题描述:

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

    二叉树的最小深度为根节点到最近叶子节点的距离。

    样例:

    给出一棵如下的二叉树:

            1

         /     \ 

       2       3

              /    \

            4      5  

    这个二叉树的最小深度为 2

    实现思路:一分为二,判断左子树或右子树是否为空,若左子树为空,则返回右子树的最小深度,否则返回左子树的最小深度。若都不为空,分别求二叉树的左右子树的深度,然后比较它的左右子树的深度的大小,返回较小的深度加1。

    实现代码:

    /**  * Definition of TreeNode:  * class TreeNode {  * public:  *     int val;  *     TreeNode *left, *right;  *     TreeNode(int val) {  *         this->val = val;  *         this->left = this->right = NULL;  *     }  * }  */ class Solution { public:     /**      * @param root: The root of binary tree.      * @return: An integer      */     int minDepth(TreeNode *root) {         // write your code here         if(root==NULL)         return 0;         if(root->left==NULL)          return minDepth(root->right)+1;         if(root->right==NULL)          return minDepth(root->left)+1;         int leftDepth=minDepth(root->left);         int rightDepth=minDepth(root->right);         if(leftDepth<rightDepth)         {return leftDepth+1;}         else         {return rightDepth+1;}     } };

    做题感想:这个题与二叉树的最大深度类似,但不单只是把代码改成最小就能行。

    转载请注明原文地址: https://ju.6miu.com/read-667793.html

    最新回复(0)