首页 > 代码库 > 重做104. Maximum Depth of Binary Tree

重做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.

思路:知道有recursion的方法。但是想应用一下dfs和backtracking,啊哈哈终于做出来了。

Solution1:

/** * 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;        }        List<Integer> res=new ArrayList<Integer>();        dfs(root,res,1);        Collections.sort(res);        return res.get(res.size()-1);    }    public void dfs(TreeNode root,List<Integer> res, int max)    {        if(root==null)        {            return;        }        if(root.left==null&&root.right==null)        {            res.add(max);            return;        }        dfs(root.left,res,++max);        max--;        dfs(root.right,res,++max);        max--;    }    }

Solution2:

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

Recursion的定义. ref:http://www.cs.princeton.edu/courses/archive/fall10/cos126/lectures/07-23Recursion-2x2.pdf

Recursive Program Recursive Program. Implement a function having integer arguments by

• base case: Implementing it for some specific values of the arguments.

• reduction step: Assume the function works for smaller values of its arguments and use it to implement it for the given values

 

重做104. Maximum Depth of Binary Tree