Leetcode:minimum_depth_of_binary_tree解决问题的方法

Leetcode:minimum_depth_of_binary_tree解决问题的方法

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

一、     称号

  并寻求最深的二元相似。给定的二进制树。求其最小深度。

最小深度是沿从根节点,到叶节点最短的路径。

二、     分析

  当我看到这个题目时。我直接将最深二叉树的代码略微改了下,把max改成min。本以为应该没有问题,谁知道WA了两次,我静下来看了看。最终知道了,当遇到有结点为NULL时就得要结束了。所下面次再简单的题目也要静下来好好分析,不然会easy出错。

 

/**
 * Definition for binary tree
 * 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 mleft=minDepth(root->left);
        int mright=minDepth(root->right);
        if(mleft==0)
           return 1+mright;
        else if(mright==0)
           return 1+mleft;   
        else return min(mleft,mright)+1;
    }
};

二、

 
 * Definition for binary tree
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */

class Solution {
public:
    int minDepth(TreeNode *root) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        return minRec(root);
    }
    
    int minRec( TreeNode * root) {
        if(!root) return 0;
        
        int left = minRec( root->left);
        int right = minRec( root->right);
        
        if(left && right) return 1 + min(left, right);
        if(left || right) return 1+left+right;
        return 1;
    }
};
三、

 
/**
 * Definition for binary tree
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public int minDepth(TreeNode root) {
        // Start typing your Java solution below
        // DO NOT write main() function

        return minRec(root);
    }
    
    private int minRec(TreeNode root) {
        if(root==null) return 0;
        
        int l = minRec(root.left);
        int r = minRec(root.right);
        
        if(l==0) return r+1;
        if(r==0) return l+1;
        
        return Math.min(l, r) + 1;
        
    }
}

版权声明:本文博主原创文章,博客,未经同意不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/116848.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Java中jdk1.8.0-181的下载与配置环境

    下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html我的版本是1.8.0.181,版本不同可能有不一样,安装完成后,需要进行环境变量的配置,右键我的电脑—属性—-高级系统设置就会看到下面的界面:也可以用Ctrl+r,输入sysdm.cpl进入…

  • python qt是什么_初识Python与Qt「建议收藏」

    python qt是什么_初识Python与Qt「建议收藏」Python的3.0版本,在开发阶段被称为Python3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python3.0在设计的时候就没有考虑向下兼容。许多针对早期Python版本设计的程序都无法在Python3.0上正常运行。为了照顾现有程序,Python2.6作为一个过渡版本,基本使用了Python2.x的语法和库,同时考虑了向Pyt…

  • MFC界面库BCGControlBar的介绍

    MFC界面库BCGControlBar的介绍英文原文:http://www.bcgsoft.com/bcgcontrolbarpro.htmBCGControlBar是MFC的一个扩展库其英文全称是”BusinessComponentsGalleryControlBar”,它允许你去创建像完全自定义的像MicrosoftOffice2000/XP/2003/2007/2010/2013and VisualStudio的界

  • XXX测试用例设计?XXX怎么测试?(行李箱、电梯、水杯、笔、椅子)

    XXX测试用例设计?XXX怎么测试?(行李箱、电梯、水杯、笔、椅子)建议回答内容:功能测试(单个功能、逻辑业务/功能交互)、界面测试、易用性测试、兼容性测试、安全性测试、性能测试行李箱我不知道这个行李箱的具体需求,所以会以我认知的行李箱来思考从功能测试来考虑的话,拉杆箱大小、厚度、容量、各个面(包括拉杆面、脚轮面)承重拉杆承重是否符合质检标准;超出容量、超出承重会有什么影响;拉杆的伸缩收回是否灵活;箱子的开锁解锁是否方便安全;界面测试,我会考虑箱子的材质、颜色、花纹、形状是否符合要求;箱子吊牌logo是否正确易用性方面,箱子拉杆手把是否易握防滑、箱子

  • 网络请求 header 的内容以及各个键值对的含义

    网络请求 header 的内容以及各个键值对的含义

    2021年11月11日
  • Python基本语法

    Python基本语法Python基本语法

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号