问题描述
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
返回它的最大深度 3 。
解题思路
可以结合递归遍历的思想,在递归函数中添加一个参数i,表示当前处在的层数,即深度。每次递归进入孩子结点,i就加1。当遍历到叶子结点的时候,就需要判断当前叶子结点的深度是否是最深的。
代码实现
class Solution {
private int maxDep=0;
private void SeaMaxDepth(TreeNode p, int i) {
// TODO Auto-generated method stub
if(p==null){
if(i>maxDep){
maxDep=i;
}
return;
}
SeaMaxDepth(p.left,i+1);
SeaMaxDepth(p.right,i+1);
}
public int maxDepth(TreeNode root) {
SeaMaxDepth(root,0);
return maxDep;
}
}