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));
        }
    }
  • 相关阅读:
    python链家网高并发异步爬虫and异步存入数据
    python爬取百度文库所有内容
    PyQt5+requests实现车票查询工具
    python黑科技库:FuckIt.py,让你代码从此远离bug
    教你如何使用Python写游戏辅助脚本
    python实现定时发送qq消息
    Python利用带权重随机数解决抽奖和游戏爆装备问题
    Beta冲刺随笔集合
    用户调查报告
    Beta冲刺总结
  • 原文地址:https://www.cnblogs.com/yrbbest/p/4437294.html
Copyright © 2011-2022 走看看