zoukankan      html  css  js  c++  java
  • LeetCode111. 二叉树的最小深度

    ☆☆☆方法1:递归,需要注意二叉树退化成链表的情况,要单独处理没有左子树或没有右子树的特殊情况

      方法2:BFS。二叉树层序遍历

    ☆☆☆方法3:DFS

    class Solution {
        int min = Integer.MAX_VALUE;
        public int minDepth(TreeNode root) {
            /**
             *  方法1:递归
             *      需要注意二叉树退化成链表的特殊情况。
             */
            if (root == null) return 0;
            int left = minDepth(root.left);
            int right = minDepth(root.right);
            // 如果left和right都为0,说明是叶子节点,返回1即可,
            // 如果left和right有一个为0,说明其中一个子节点为空,此时返回它另一个子节点的最小深度+1即可。
            // 如果left和right都不为0,说明左右孩子都不为空,返回最小深度的+1即可。
            return (left == 0 || right == 0) ? 1 + left + right : Math.min(left,right) + 1;
            /**
             *  方法2:二叉树层序遍历
             */
            /*
            if (root == null) return 0;
            Queue<TreeNode> queue = new LinkedList<>();
            queue.offer(root);
            int level = 0;
            while (!queue.isEmpty()) {
                int size = queue.size();
                level ++;
                for (int i = 0; i < size; i++) {
                    TreeNode cur = queue.poll();
                    if (cur.left == null && cur.right == null) return level;
                    if (cur.left != null) queue.offer(cur.left);
                    if (cur.right != null) queue.offer(cur.right);
                }
            }
            return -1;
            */
            /**
             *  方法3:DFS
             */
            /*
            if (root == null) return 0;
            dfs(root, 1); // 初始化为第一层
            return min;
            */
        }
        private void dfs(TreeNode root, int level) {
            if (root == null)
                return;
            // 每次到叶子节点时 更新min
            if (root.left == null && root.right == null) {
                min = Math.min(min, level);
            }
            dfs(root.left, level + 1);
            dfs(root.right, level + 1);
        }
    }
  • 相关阅读:
    4111130工作总结
    js enumerations 01
    有角度地事件解读,有品质地视觉呈现。《视界》
    Mule 入门之:环境搭建
    Date 对象用于处理日期和时间
    JS脚本,时间判断问题
    丈夫道(zhuan)
    查看IP连接netstat
    二代支付简介
    对付网页无法复制的最简单绝招 ( 转)
  • 原文地址:https://www.cnblogs.com/HuangYJ/p/14169877.html
Copyright © 2011-2022 走看看