import java.util.ArrayDeque;
class TreeNode{
int data;
TreeNode left;
TreeNode right;
}
public class DepthOfBinaryTree {
/***
* 递归实现
* @param root
* @return
*/
public int depth1(TreeNode root){
if(root==null)
return 0;
int left=depth1(root.left)+1;
int right=depth1(root.right)+1;
return left>right?left:right;
}
/***
* 非递归实现,借助辅助数据结构队列,广度优先遍历二叉树
*/
public int depth2(TreeNode root){
if(root==null)
return 0;
ArrayDeque<TreeNode> queue=new ArrayDeque<TreeNode>();
int height=0;
queue.add(root);
while (!queue.isEmpty()){
int size=queue.size();
for(int i=0;i<size;i++){
TreeNode node=queue.removeFirst();
if(node.left!=null){
queue.add(node.left);
}
if(node.right!=null) {
queue.add(node.right);
}
}
height++;
}
return height;
}
}
求树的深度(递归和非递归实现)
最新推荐文章于 2022-01-28 16:08:40 发布