二叉树的最大深度,这个题目可用递归来解决,原题地址添加链接描述
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回它的最大深度 3
这个题目,可用递归来解决,也可以用广度优先搜索,这里以递归为例来说明,广度优先搜索,可参考这篇文章。广度优先算法
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int maxDepth(TreeNode root) {
if(null == root) return 0;
return getNode(root, 1);
}
private int getNode(TreeNode note,int i){
int a = i;
int b = i;
TreeNode left = note.left;
if(null != left){
a = getNode(left,i + 1);
}
TreeNode right = note.right;
if(null != right){
b = getNode(right,i + 1);
}
return Math.max(a,b);
}
}
代码不难理解,练的多了,就容易写出来,刚开始可能不习惯。