Leetcode二叉树的最小深度

Posted gdut-gordon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode二叉树的最小深度相关的知识,希望对你有一定的参考价值。

 

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

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

采用基于递归的深度搜索算法。

深度搜索:首先找出所有从根节点到叶子节点的路径,再比较最小深度。

递归:需要定义递归函数

/**
 * Definition for a binary tree node.
 * struct TreeNode 
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) 
 * ;
 */
class Solution 
public:
    int minDepth(TreeNode* root) 
        if (root == NULL)
            return 0;
        
        int result = 0, left = 0, right = 0;
        left = minDepth(root->left);
        right = minDepth(root->right);

        if (left == 0 || right == 0)
            result = 1 + max(left, right);
        else
            result  = 1 + min(left, right);
        
        return result;
    
;

 

复杂度分析:

时间复杂度:节点个数为N。每个节点访问一次,O(n).

空间复杂度:最坏情况下,N个节点构成非平衡树,每个节点只有1个孩子,这时候递归调用N次(树的高度),此时栈的空间开销为O(n). 最理想情况下,N个节点构成完全平衡树,树的高度为logN,栈的空间开销为O(logN).

 

以上是关于Leetcode二叉树的最小深度的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode-树二叉树的最小深度

LeetCode Java刷题笔记—111. 二叉树的最小深度

leetcode 111. 二叉树的最小深度

⭐算法入门⭐《二叉树》简单05 —— LeetCode 111. 二叉树的最小深度

LeetCode 111. 二叉树的最小深度

[LeetCode] 111. 二叉树的最小深度