zoukankan      html  css  js  c++  java
  • 104. Maximum Depth of Binary Tree

    题目:

    Given a binary tree, find its maximum depth.

    The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.

    Hide Tags
     Tree Depth-first Search
     

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

    题解:

    也是DFS。 假如不使用recursive,可以用level order traversal,使用queue来辅助,每增加一层,depth + 1。 Recursive很简单, 有机会要试试iterative

    Time Complexity - O(n), Space Complexity - O(n)。

    public class Solution {
        public int maxDepth(TreeNode root) {
            if(root == null)
                return 0;
            return 1 + Math.max(maxDepth(root.left), maxDepth(root.right));
        }
    }

    Update

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    public class Solution {
        public int maxDepth(TreeNode root) {
            if(root == null)
                return 0;
            return 1 + Math.max(maxDepth(root.left), maxDepth(root.right));
        }
    }

    二刷:

    Java:

    Recursive:

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    public class Solution {
        public int maxDepth(TreeNode root) {
            if (root == null) {
                return 0;
            }
            return 1 + Math.max(maxDepth(root.left), maxDepth(root.right));
        }
    }

    层序遍历:

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    public class Solution {
        public int maxDepth(TreeNode root) {
            if (root == null) {
                return 0;
            }
            Queue<TreeNode> q = new LinkedList<>();
            q.offer(root);
            int curLevel = 1;
            int nextLevel = 0;
            int depth = 0;
            while (!q.isEmpty()) {
                TreeNode node = q.poll();
                curLevel--;
                if (node.left != null) {
                    q.offer(node.left);
                    nextLevel++;
                }
                if (node.right != null) {
                    q.offer(node.right);
                    nextLevel++;
                }
                if (curLevel == 0) {
                    curLevel = nextLevel;
                    nextLevel = 0;
                    depth++;
                }
            }
            return depth;
        }
    }

    三刷:

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    public class Solution {
        public int maxDepth(TreeNode root) {
            if (root == null) {
                return 0;
            }
            return 1 + Math.max(maxDepth(root.left), maxDepth(root.right));
        }
    }
  • 相关阅读:
    System.Reflection.MemberInfo.cs
    System.Reflection.CustomAttributeData.cs
    System.Reflection.CustomAttibuterNamedArgument.cs
    数据文件、日志文件、归档文件、控制文件、参数文件及RMAN备份数据库信息查询
    RMAN完整全备份
    RMAN增量备份-备份保留策略-设置备份集属性
    安装sql server 2008 management studio时,提示升级VS2008 到 SP1
    RMAN备份各种物理文件
    ORACLE物理存储结构
    视图、序列、索引、同义词
  • 原文地址:https://www.cnblogs.com/yrbbest/p/4437294.html
Copyright © 2011-2022 走看看