zoukankan      html  css  js  c++  java
  • LeetCode_Minimum Depth of Binary Tree

    一.题目

    Minimum Depth of Binary Tree

      Total Accepted: 58982 Total Submissions: 202860My Submissions

    Given a binary tree, find its minimum depth.

    The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.

    Show Tags
    Have you met this question in a real interview?

      

    Yes
     
    No

    Discuss





    二.解题技巧

        这道题仅仅是一道二叉树的深度优先搜索。然后返回深度最小的值,能够递归来实现。递归退出的条件是到达叶子节点或者到达空子树,使用空子树作为退出条件比較easy进行推断。仅仅要该结点的指针值为NULL。就能够推断了,空子树的深度为0。

    因此能够将每一个结点的左右两个子树的深度返回给父节点,父节点选择比較小的深度,然后再返回给祖先结点,以此类推,最后返回给根结点,得到终于结果。

        上面提到的这样的方法的时间复杂度为O(n),空间复杂度为O(logn)。


    三.实现代码

    #include <iostream>
    
    /**
    * Definition for a binary tree node.
    * struct TreeNode {
    *     int val;
    *     TreeNode *left;
    *     TreeNode *right;
    *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
    * };
    */
    
    
    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)
            {
                return 0;
            }
    
            int Result = 1;
            int Left = minDepth(root->left);
            int Right = minDepth(root->right);
    
            if (Left * Right)
            {
                Result += Left > Right?

    Right : Left; } else { Result += Right + Left; } return Result; } };




    四.体会

        这是一道对二叉树进行递归来获得结果的题。我发如今眼下所做的二叉树的题目中,基本上考察的都是递归方面。预计这个也是二叉树的一个考点所在。




    版权全部,欢迎转载,转载请注明出处,谢谢微笑





  • 相关阅读:
    怎样做到长期写一个价值博客?
    linux中rz、rs命令无法执行的情况
    关于图床的选择方案(博客园、公众号、简书、CSDN)
    如何有效地记录和管理笔记(一)
    Linux之时间同步操作
    weblogic12.1.3 静默安装 建域
    在Linux 系统上运行多个tomcat
    Python 生成随机数
    异常处理

  • 原文地址:https://www.cnblogs.com/liguangsunls/p/6773832.html
Copyright © 2011-2022 走看看