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.
Example
Given a binary tree as follow:1 / \ 2 3 / \ 4 5
The maximum depth is 3.
翻译:
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的距离。
给出一棵如下的二叉树:
1 / \ 2 3 / \ 4 5
这个二叉树的最大深度为3.
解题思路:
使用深度优先搜索,遍历二叉树所有节点,找出最大深度,其中深度优先搜索,使用递归法,可以采取递归-遍历法、递归-分治法来实现。代码如下:
// 递归 - 遍历法
public class Solution {
private int depth;
public int maxDepth(TreeNode root) {
depth = 0;
helper(root, 1);
return depth;
}
private void helper(TreeNode node, int curtDepth) {
if (node == null) {
return;
}
if (curtDepth > depth) {
depth = curtDepth;
}
helper(node.left, curtDepth + 1);
helper(node.right, curtDepth + 1);
}
}
// 递归 - 分治法
public class Solution {
public int maxDepth(TreeNode root) {
if (root == null) {
return 0;
}
int left = maxDepth(root.left);
int right = maxDepth(root.right);
return Math.max(left, right) + 1;
}
}