zoukankan      html  css  js  c++  java
  • 111. Minimum Depth of Binary Tree

    原题链接:https://leetcode.com/problems/minimum-depth-of-binary-tree/description/
    简单级别的题目就是不咋滴难哦:

    /**
     * Created by clearbug on 2018/2/26.
     */
    public class Solution {
    
        static class TreeNode {
            int val;
            TreeNode left;
            TreeNode right;
    
            public TreeNode(int val) {
                this.val = val;
            }
        }
    
        public static void main(String[] args) {
            Solution s = new Solution();
    
            // test1
            TreeNode root = new TreeNode(3);
            root.left = new TreeNode(9);
            root.right = new TreeNode(20);
            root.right.left = new TreeNode(15);
            root.right.right = new TreeNode(7);
            System.out.println(s.minDepth(root));
    
            // test2
            TreeNode root2 = new TreeNode(1);
            root2.left = new TreeNode(2);
            root2.right = new TreeNode(2);
            root2.left.left = new TreeNode(3);
            root2.left.right = new TreeNode(3);
            root2.left.left.left = new TreeNode(4);
            root2.left.left.right = new TreeNode(4);
            System.out.println(s.minDepth(root2));
    
            // test3
            TreeNode root3 = new TreeNode(1);
            root3.left = new TreeNode(2);
            root3.right = new TreeNode(2);
            root3.left.left = new TreeNode(3);
            root3.left.right = new TreeNode(3);
            root3.right.left = new TreeNode(3);
            root3.right.right = new TreeNode(3);
            root3.left.left.left = new TreeNode(4);
            root3.right.right.right = new TreeNode(4);
            System.out.println(s.minDepth(root3));
    
            // test4
            TreeNode root4 = new TreeNode(1);
            root4.left = new TreeNode(2);
            root4.left.left = new TreeNode(3);
            System.out.println(s.minDepth(root4));
        }
    
        public int minDepth(TreeNode root) {
            if (root == null) {
                return 0;
            }
            if (root.left == null && root.right == null) { // left, right 均为 null, 说明 root 是叶子结点
                return 1;
            }
    
            if (root.left == null) { // left 为 null, 而 right 不为 null, 说明 root 并不是叶子结点,还需要在 right 上查找叶子结点
                return minDepth(root.right) + 1;
            }
            if (root.right == null) {
                return minDepth(root.left) + 1;
            }
    
            // left, right 均不为 null, 说明还需要在 left 和 right 上查找叶子结点
            int leftMinDepth = minDepth(root.left) + 1;
            int rightMinDepth = minDepth(root.right) + 1;
            return Math.min(leftMinDepth, rightMinDepth);
        }
    
    }
    
  • 相关阅读:
    Java并发编程基本概念
    详解TCP:顺序和丢包问题
    详解TCP:三次握手、四次挥手
    使用DockerFile构建运行GoWeb
    Go之Gorm和BeegoORM简介及配置使用
    Nginx WebUI管理
    Kibana配置nginx反代并本地ca加密nginx
    07 . ELK Stack7.2一键多机部署脚本
    腾讯蓝鲸自动化运维平台简介部署及常见报错解决
    Go操作Redis
  • 原文地址:https://www.cnblogs.com/optor/p/8584512.html
Copyright © 2011-2022 走看看