首页 > 其他 > 详细

Lintcode97-Maximum Depth of Binary Tree-Easy

时间:2019-04-06 17:22:18      阅读:135      评论:0      收藏:0      [点我收藏+]

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);
    }
}

 

 

Lintcode97-Maximum Depth of Binary Tree-Easy

原文:https://www.cnblogs.com/Jessiezyr/p/10662043.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!