• Minimum Depth of Binary Tree


    题目描述:

    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.

    一看到这个题目的时候,想一层一层的数一下,仔细一想貌似不太靠谱,要么改结点结构,要么把结点在第几层存到另外的数据结构中。再一想其实很简单,就像一个递归定义:

    当前树的minimum depth等于:
    1.左右子树都不为空时,为子树中较小的minimum depth+1;
    2.有一个子树为空时,为非空子树的minimum depth+1;
    3.都为空时,为1。

    这样就可以解决了,时间复杂度为O(n),代码如下:

     1     int minDepth(TreeNode *root) {
     2         if(root==NULL) return 0;
     3         if(root->left==NULL&&root->right==NULL)
     4             return 1;
     5         
     6         int rmin=minDepth(root->right);
     7         int lmin=minDepth(root->left);
     8         if(root->left==NULL)
     9             return rmin+1;
    10         if(root->right==NULL)
    11             return lmin+1;
    12         int c = min(lmin,rmin)+1;
    13         return c;
    14     }
    15     int min(int a,int b){
    16         return a<b?a:b;
    17     }
  • 相关阅读:
    SpringMVC 多文件上传
    get传参乱码问题
    springMVC配置
    带参sql$和#的区别(注解)
    java多线程--实现Runnable接口方式
    java复制文件夹及所有子目录和文件
    Angularjs 学习笔记
    springboot 项目 docker化部署
    docker 基础
    Java-马士兵动态代理模式
  • 原文地址:https://www.cnblogs.com/mike442144/p/3427007.html
Copyright © 2020-2023  润新知