zoukankan      html  css  js  c++  java
  • leetcode------Minimum Depth of Binary Tree

    标题: Minimum Depth of Binary Tree
    通过率: 29.2%
    难度: 简单

    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.

    对于求树的深度就是递归比较,但是求树的最短路径的话我认为分层去查看,如果某一层中有一个节点没有左右子树,那么该层就是树的最短路径,

    在网上查找的算法中递归调用与树深的递归调用一样,但是再递归时要判断一个right=0时返回left+1,反之返回right+1,对于这个判断我不知道意义在哪里,先贴出网上的做法如下:

     1 public class Solution {
     2     public int minDepth(TreeNode root) {
     3                 int depth1=0;
     4         int depth2=0;
     5         if(root==null) return 0;
     6         //left
     7         depth1=minDepth(root.left);
     8         depth2=minDepth(root.right);
     9         if(depth1==0)return depth2+1;
    10         if(depth2==0)return depth1+1;
    11         if(depth1<depth2)
    12             return depth1+1;
    13             else
    14                 return depth2+1;
    15     }
    16 }

    我的做法就是按层次进行判断,代码如下:

     1 /**
     2  * Definition for binary tree
     3  * public class TreeNode {
     4  *     int val;
     5  *     TreeNode left;
     6  *     TreeNode right;
     7  *     TreeNode(int x) { val = x; }
     8  * }
     9  */
    10 public class Solution {
    11     public int minDepth(TreeNode root) {
    12         if(root==null)return 0;
    13         LinkedList<TreeNode> nodes = new LinkedList<TreeNode>();
    14         LinkedList<Integer> counts = new LinkedList<Integer>();
    15         nodes.add(root);
    16         counts.add(1);
    17         while(!nodes.isEmpty()){
    18             int count=counts.remove();
    19             TreeNode tree=nodes.remove();
    20             if(tree.left!=null){
    21                 nodes.add(tree.left);
    22                 counts.add(count+1);
    23             }
    24              if(tree.right!=null){
    25                 nodes.add(tree.right);
    26                 counts.add(count+1);
    27             }
    28             if(tree.left==null&&tree.right==null)
    29                 return count;
    30         }
    31         return 0;
    32     }
    33 }
  • 相关阅读:
    时间选择器组件之table避坑指南
    ⼯⼚模式
    外观模式
    中介者模式+装饰器模式
    代理模式
    策略模式
    设计模式--------单例模式
    设计模式--------订阅/发布模式 (观察者)
    对ts的研究
    对react的研究20200724
  • 原文地址:https://www.cnblogs.com/pkuYang/p/4231709.html
Copyright © 2011-2022 走看看