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);
        }
    }
  • 相关阅读:
    手脱ASPack2.12壳(练习)
    手脱UPX3.91壳(练习)
    如何在程序执行前插入可执行代码(算是吾爱的作业吧,活学活用)
    小米笔记本粉丝感恩狂欢趴【慎入!!】
    picpick截屏软件脱壳
    JAVA反序列化漏洞
    Java中的数据类型
    Java中常见的包
    Scrapy
    PHPstorm 函数时间注释的修改
  • 原文地址:https://www.cnblogs.com/HuangYJ/p/14169877.html
Copyright © 2011-2022 走看看