求二叉树的深度
题目描述:
方法一:BFS(广度优先搜索遍历)
class TreeNode{
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
public int maxDepth(TreeNode root) {
if(root==null) return 0;
int ans = 0;//用来记录第几层
Queue<TreeNode> queue = new LinkedList<TreeNode>();//利用队列
queue.add(root);//将根节点加入队列
while(!queue.isEmpty()) {
int size = queue.size();
while(size>0) {//while循环负责:①将本层的节点出队列;②将本层节点的左节点即右节点加入队列
TreeNode node = queue.poll();
if(node.left!=null) {
queue.add(node.left);
}
if(node.right!=null){
queue.add(node.right);
}
size--;
}
ans++;
}
return ans;
}
方法二:递归
class TreeNode{
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
public int maxDepth(TreeNode root) {
if(root==null) return 0;
return 1+Math.max(maxDepth(root.left), maxDepth(root.right));//返回左子树深度与右子树深度+1的最大值
}