题目描述
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回它的最大深度 3 。
题解
方法1:层序遍历
有几层深度就是多少,做过层序遍历的都懂
public int maxDepth(TreeNode root) {
Queue<TreeNode> queue = new LinkedList<>();
int maxDept=0;
if (root==null){
return maxDept;
}
queue.add(root);
int count=0;
while (!queue.isEmpty()){
count=queue.size();
while(count>0){
TreeNode node=queue.poll();
if (node.left!=null){
queue.add(node.left);
}
if (node.right!=null){
queue.add(node.right);
}
count--;
}
maxDept++;
}
return maxDept;
}
方法二:递归
递归遍历每个节点的左节点与右节点,每多一个节点则个数加一
public int maxDepth(TreeNode root) {
if (root==null){
return 0;
}else {
int left = maxDepth(root.left);
int right = maxDepth(root.right);
return Math.max(left,right)+1;
}
}