剑指offer55 二叉树的深度
递归:(DFS)
public int maxDepth(TreeNode root) {
if(root==null) return 0;
return Math.max(maxDepth(root.left),maxDepth(root.right))+1;
}
层次遍历BTS:
public int maxDepth(TreeNode root) {
if(root==null) return 0;
List<TreeNode> queue=new LinkedList<>();//存放每一层的结点
List<TreeNode> temp;
queue.add(root);
int count=0;
while(!queue.isEmpty()){
temp=new LinkedList<>();
for(TreeNode node:queue){
if(node.left!=null) temp.add(node.left);
if(node.right!=null) temp.add(node.right);
}
queue=temp;
count++;
}
return count;
}
本题代码思路:运用temp临时存放每一层的结点。
力扣111 二叉树的最小深度
递归:
public int minDepth(TreeNode root) {
if(root==null) return 0;
int left=minDepth(root.left);
int right=minDepth(root.right);
return (left==0||right==0)?left+right+1:Math.min(left,right)+1;
}