题目描述:
方法一(递归):
代码
/**
* 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(root == null){
return 0;
}
TreeNode left = root.left;
TreeNode right = root.right;
return Math.max(maxDepth(left),maxDepth(right)) + 1;
}
}
结果:
方法二:
分析:内层while循环利用层次遍历得到每一层节点(因为不知道哪个分支深,都要遍历),外层while循环用来记录层数。
/**
* 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(root == null){
return 0;
}
Queue<TreeNode> q1 = new LinkedList<TreeNode>();
q1.offer(root);
int count = 0;
while(!q1.isEmpty()){
int size = q1.size();
while(size > 0){
TreeNode node = q1.poll();
TreeNode left = node.left;
TreeNode right = node.right;
if(left != null){
q1.offer(left);
}
if(right != null){
q1.offer(right);
}
size--;
}
count++;
}
return count;
}
}
结果;