zoukankan      html  css  js  c++  java
  • 111. 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.

    Hide Tags
     Tree Depth-first Search 

    链接: http://leetcode.com/problems/minimum-depth-of-binary-tree/

    一刷,按层判断

     1 class Solution(object):
     2     def minDepth(self, root):
     3         if not root:
     4             return 0
     5         
     6         prev = [root]
     7         cur = []
     8         depth = 1
     9         while prev:
    10             for elem in prev:
    11                 if not elem.left and not elem.right:
    12                     return depth
    13                 if elem.left:
    14                     cur.append(elem.left)
    15                 if elem.right:
    16                     cur.append(elem.right)
    17             depth += 1
    18             prev, cur = cur, []
    19         return depth

    2/17/2017, Java, performance不好

    错误:判断时候要注意是否是叶节点,而不是一边是null,一边有子树

     1 public class Solution {
     2     public int minDepth(TreeNode root) {
     3         if (root == null) return 0;
     4         Queue<TreeNode> level = new LinkedList<>();
     5         TreeNode node = new TreeNode(-1);
     6         int size;
     7         int index = 0;
     8         
     9         level.add(root);
    10         while(!level.isEmpty()) {
    11             index++;
    12             size = level.size();
    13             for (int i = 0; i < size; i++) {
    14                 node = level.poll();
    15                 if (node.left == null && node.right == null) return index;
    16                 if (node.left != null) level.add(node.left);
    17                 if (node.right != null) level.add(node.right);
    18             }
    19         }
    20         return index;
    21     }
    22 }

    5/11/2017

    算法班

    注意:

    1. Queue是接口,用LinkedList实现

    2. Queue的方法是add/poll/remove等等

    3. 判断LinkedList是否为空,isEmpty与stack.empty有不同

     1 public class Solution {
     2     public int minDepth(TreeNode root) {
     3         if (root == null) return 0;
     4         
     5         Queue<TreeNode> queue = new LinkedList<TreeNode>();
     6         TreeNode node;
     7         queue.add(root);
     8         int index = 0;
     9         while (!queue.isEmpty()) {
    10             index++;
    11             int size = queue.size();
    12             for (int i = 0; i < size; i++) {
    13                 node = queue.poll();
    14                 if (node.left == null && node.right == null) return index;
    15                 if (node.left != null) {
    16                     queue.add(node.left);
    17                 }
    18                 if (node.right != null) {
    19                     queue.add(node.right);
    20                 }
    21             }
    22         }
    23         return index;
    24     }
    25 }

    别人的做法

    递归

    1 public class Solution {
    2     public int minDepth(TreeNode root) {
    3         if(root == null) return 0;
    4         int left = minDepth(root.left);
    5         int right = minDepth(root.right);
    6         return (left == 0 || right == 0) ? left + right + 1: Math.min(left,right) + 1;
    7        
    8     }
    9 }

    https://discuss.leetcode.com/topic/8723/my-4-line-java-solution

    https://discuss.leetcode.com/topic/16869/3-lines-in-every-language

    更多讨论

    https://discuss.leetcode.com/category/119/minimum-depth-of-binary-tree

  • 相关阅读:
    【NOIP2016】换教室
    【NOIP模拟赛】总结
    【Codeforces Round 418】An impassioned circulation of affection DP
    DP测试总结
    【NOIP2012】疫情控制
    【HNOI2016】序列 莫队+单调栈+RMQ
    【Luogu P2709 小B的询问】莫队
    【HNOI2017】影魔
    【HNOI2017】大佬
    阿里云MaxCompute 2019-7月刊
  • 原文地址:https://www.cnblogs.com/panini/p/5602954.html
Copyright © 2011-2022 走看看