【LeetCode】104. Maximum Depth of Binary Tree

来源:互联网 发布:淘宝网如何发布宝贝 编辑:程序博客网 时间:2024/05/21 15:45

问题描述

问题链接:https://leetcode.com/problems/maximum-depth-of-binary-tree/#/description

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.

我的代码

思路很简单,就是递归求最大的。

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    private int maxDeepCount = Integer.MIN_VALUE;    public int maxDepth(TreeNode root) {        /*        思路就是使用递归来找最大深度。        */        if(root == null){            return 0;        }        helper(root,1);        return maxDeepCount;    }    private void helper(TreeNode root, int curDeep){        if(curDeep > maxDeepCount){            maxDeepCount = curDeep;        }        if(root.left != null){            helper(root.left, curDeep + 1);        }        if(root.right != null){            helper(root.right, curDeep + 1);        }    }}

打败了18.63%的Java代码,来学习一下评论区的大神们。

讨论区

Simple solution using Java

这个真的好省事啊。

if the node does not exist, simply return 0. Otherwise, return the 1+the longer distance of its subtree.

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

Clean Java Iterative Solution

I do believe if you can think of an iterative solution, it’s always better than using a recursive one. And technical y every recursive solution can be converted into a equivalent iterative one.

public int maxDepth(TreeNode root) {    if (root == null)        return 0;    Deque<TreeNode> stack = new LinkedList<TreeNode>();    stack.push(root);    int count = 0;    while (!stack.isEmpty()) {        int size = stack.size();        while (size-- > 0) {            TreeNode cur = stack.pop();            if (cur.left != null)                stack.addLast(cur.left);            if (cur.right != null)                stack.addLast(cur.right);        }        count++;    }    return count;}
0 0
原创粉丝点击