-
3.27
- …
-
2.11
- 两种方式,一种原地记录 maxD,一种辅助函数传入 currentD,在开头更新
-
1.26
- 没秒,且又看到了一个新方法,类似于5.二叉树的直径
class Solution {
public int maxDepth(TreeNode root) {
if(root==null) return 0;
int leftD = maxDepth(root.left);
int rightD = maxDepth(root.right);
// 我的深度就是它们中最大的那个,再加上我自己的这 1 层
int maxD = Math.max(leftD,rightD)+1;
return maxD;
}
}-
1.16
- 初始传入时,深度默认为 1,又忘了递归,又忘了 currentDepth 和 maxDepth,累了
-
11.11
- 深度遍历其实没啥,这点没卡
- 进入dfs需要判空+更新depth(与上一个临时depth比较)
class Solution {
private int depth = 0;
public int maxDepth(TreeNode root) {
// int depth=0;
// orderIn(root,depth);
// return depth;
// }
// public void orderIn(TreeNode root,int depth){
// if(root==null){
// return;
// }
// orderIn(root.left,depth);
// orderIn(root.left,depth);
// depth++;
// }
dfs(root,1);
return depth;
}
private void dfs(TreeNode root,int currentDepth){
if(root==null){return;}
depth=Math.max(depth,currentDepth);
dfs(root.left,currentDepth+1);
dfs(root.right,currentDepth+1);
}
}- 深度优先遍历
- 每次进入遍历带入深度,与总记录深度做比较做出最大的深度更新为总深度