题目描述:
输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。
代码:
递归算法(0 ms)(38.9 MB)
maxDepth()方法可以求出一个树的最大深度,递归的思路。
public int maxDepth(TreeNode root) {
if (root == null) return 0;
return Math.max(maxDepth(root.left)+1, maxDepth(root.right)+1);
}
层序遍历(1 ms)(38.9 MB)
类比层序遍历。
public int maxDepth(TreeNode root) {
if(root == null) return 0;
TreeNode tmp;
int dep = 0;
int sumNum = 0;
LinkedList<TreeNode> queue = new LinkedList<>();//建立一个辅助的队列
queue.add(root);
while(!queue.isEmpty()){//如果队列不空的话
sumNum = queue.size();
dep ++; // 累计二叉树的深度
for(int i = 0; i < sumNum; i ++){
tmp = queue.remove();
if(tmp.left!=null) queue.add(tmp.left);
if(tmp.right!=null) queue.add(tmp.right);
}
}
return dep;
}