leetcode–demo104二叉树的最大深度
两种方法:dfs 和 bfs
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {
}
TreeNode(int val) {
this.val = val;
}
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}
//dfs递归
class Solution {
public int maxDepth(TreeNode root) {
if (root == null) {
return 0;
} else {
int left = maxDepth(root.left) + 1;
int right = maxDepth(root.right) + 1;
return Math.max(left,right);
}
}
}
//bfs(广度优先)
class Solution1{
public int maxDepth(TreeNode root) {
if (root == null) {
return 0;
}
Queue<TreeNode> queue=new LinkedList<>();
queue.offer(root);
int ans=0;
while(!queue.isEmpty()){
int size=queue.size();//当前层的节点个数
while (size>0){
TreeNode node=queue.poll();//将父节点出队
if (node.left!=null){
queue.offer(node.left);//子节点入队
}
if (node.right!=null){
queue.offer(node.right);
}
size--;
}
ans++;
}
return ans;
}
}