• 【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).

  • 相关阅读:
    闭包装饰器与递归
    内置函数学习
    可迭代对象 迭代器 生成器 推导式 匿名函数
    函数基础
    python文件操作
    深浅copy与小数据池
    python数据类型
    python基础语法
    view视图函数的书写 请求与响应相关
    LeetCode OJ:Rotate Image(旋转图片)
  • 原文地址:https://www.cnblogs.com/gdut-gordon/p/11371900.html
Copyright © 2020-2023  润新知