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
时间: 2024-10-14 08:07:18