码迷,mamicode.com
首页 > 其他好文 > 详细

【Leetcode】二叉树的最小深度

时间:2019-08-18 13:18:29      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:子节点   dep   bin   pre   return   ret   二叉树   def   访问   

 

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

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

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

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

递归:需要定义递归函数

/**
 * 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】二叉树的最小深度

标签:子节点   dep   bin   pre   return   ret   二叉树   def   访问   

原文地址:https://www.cnblogs.com/gdut-gordon/p/11371900.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!