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)


相关推荐

  • ajax parsererror报错,jQuery为ajax请求返回“ parsererror”[通俗易懂]

    ajax parsererror报错,jQuery为ajax请求返回“ parsererror”[通俗易懂]我一直在从jquery收到针对Ajax请求的“parsererror”,我尝试将POST更改为GET,以几种不同的方式(创建类等)返回数据,但我似乎无法弄清楚问题出在哪里。我的项目在MVC3中,我使用的是jQuery1.5,我有一个Dropdown,并且在onchange事件上,我触发了一个调用,以根据所选内容获取一些数据。下拉列表:(这会从Viewbag的列表中加载“Views”,并触发事…

  • 编译原理词法分析程序c语言_编译器常用的语法分析方法

    编译原理词法分析程序c语言_编译器常用的语法分析方法引言前面已经介绍了编译器的预处理,词法分析,词法分析器的实现,也在其中说到了语法分析的任务和过程。语法分析的输入是词法单元序列,然后根据语言的文法表示(展开式),利用有限状态机理论,生成抽象语法树,然后遍历得到中间代码,即,三地址码。本节就以一个实验的方式,来看一下,语法分析器的内在实现机制。 5.1实验描述编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查

    2022年10月31日
  • 【Qt5.12】Qt5.12安装教程[通俗易懂]

    【Qt5.12】Qt5.12安装教程[通俗易懂]00.目录文章目录00.目录01.软件下载02.软件安装03.软件测试04.附录01.软件下载Qt5.12下载网址:http://download.qt.io/archive/qt/5.12/5.12.2/选择Windows平台,Linux和Mac平台类似下载好之后的安装包:02.软件安装Step1:双击安装包,稍等片刻,然后点击nextStep2:…

  • ci框架总结(一)

    ci框架总结(一)

  • mysql字符串拼接有空值_MySQL字符串拼接「建议收藏」

    mysql字符串拼接有空值_MySQL字符串拼接「建议收藏」concat()函数拼接时不会忽略空格,但如果有值是null,则结果为nullselectconcat(‘My’,’S’,’Q’,’L’);->MySQLSELECTCONCAT(‘c’);->cSELECTCONCAT(id,name)fromuser2;->1张三2李四concat_ws()函数拼接时不会忽略空格,但会忽略nullselectconcat_…

  • Java程序设计(基础)- 基本语法

    Java程序设计(基础)- 基本语法

发表回复

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

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