zoukankan      html  css  js  c++  java
  • Lintcode97-Maximum Depth of Binary Tree-Easy

    97. 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.

    Example

    Example 1:

    Input: tree = {}
    Output: 0
    Explanation: The height of empty tree is 0.
    

    Example 2:

    Input: tree = {1,2,3,#,#,4,5}
    Output: 3	
    Explanation: Like this:
       1
      /                 
     2   3                
        /                 
       4   5

    注意:

    Java中参数传递:(细读)

    1> 基本数据类型作为参数传递时,基本类型作为参数传递时,是传递值的拷贝,无论你怎么改变这个拷贝,原值是不会改变的。

    2> 对象作为参数传递时,是把对象在内存中的地址拷贝了一份传给了参数。

    所以错误案例中,把基本数据类型int maxDepth作为参数,传给helper,只是拷贝了一份值给helper函数,所以无论helper里面maxDepth的值如何改变,return的值始终为1。

    递归法代码(错误案例):
    /**
     * Definition of TreeNode:
     * public class TreeNode {
     *     public int val;
     *     public TreeNode left, right;
     *     public TreeNode(int val) {
     *         this.val = val;
     *         this.left = this.right = null;
     *     }
     * }
     */
    
    public class Solution {
        /**
         * @param root: The root of binary tree.
         * @return: An integer
         */
        
        public int maxDepth(TreeNode root) {
            if (root == null) {
                return 0;
            }
            int maxDepth = 1;
            helper(root, 1, maxDepth);
            return maxDepth;
        }
        public void helper(TreeNode root, int curDepth, int maxDepth) {
            if (root == null) {
                return;
            }
            
            if (root.left == null && root.right == null) {
                if (curDepth > maxDepth) {
                    maxDepth = curDepth;
                }
                return;
            }
            helper(root.left, curDepth + 1, maxDepth);
            helper(root.right, curDepth + 1, maxDepth);
        }
    }

    递归法代码(改正):

    /**
     * Definition of TreeNode:
     * public class TreeNode {
     *     public int val;
     *     public TreeNode left, right;
     *     public TreeNode(int val) {
     *         this.val = val;
     *         this.left = this.right = null;
     *     }
     * }
     */
    
    public class Solution {
        /**
         * @param root: The root of binary tree.
         * @return: An integer
         */
        int maxDepth = 1;
        public int maxDepth(TreeNode root) {
            if (root == null) {
                return 0;
            }
            helper(root, 1);
            return maxDepth;
        }
        public void helper(TreeNode root, int curDepth) {
            if (root == null) {
                return;
            }
            
            if (root.left == null && root.right == null) {
                if (curDepth > maxDepth) {
                    maxDepth = curDepth;
                }
                return;
            }
            helper(root.left, curDepth + 1);
            helper(root.right, curDepth + 1);
        }
    }
  • 相关阅读:
    Spring学习记录-源码构建
    Spring学习记录
    java相关技术提纲
    Seata 分布式事务框架
    SourceTree学习记录
    其他源码管理工具
    分布式事务
    Score (模拟题)
    大整数排序
    字符串的查找删除 时间限制:1 Seconds 内存限制:32 Mbyte
  • 原文地址:https://www.cnblogs.com/Jessiezyr/p/10662043.html
Copyright © 2011-2022 走看看