class Solution {//不用全局变量写一次
public int dfs(TreeNode root,int level){
if(root==null)
return 0;
return Math.max(dfs(root.left,level+1),dfs(root.right,level+1))+1;
}
public int maxDepth(TreeNode root) {
int depth=dfs(root,0);
return depth;
}
}
class Solution {
boolean ans=true;
public int dfs(TreeNode root,int level){
if(root==null)
return 0;
int leftTreeDepth=dfs(root.left,level+1);//获取左子树的高度
int rightTreeDepth=dfs(root.right,level+1);//获取右子树的高度
if(Math.abs(leftTreeDepth-rightTreeDepth)>1)
ans=false;
return Math.max(leftTreeDepth,rightTreeDepth)+1;
}
public boolean isBalanced(TreeNode root) {
dfs(root,0);
return ans;
}
}
class Solution {//不用全局变量写一次
public int dfs(TreeNode root){
if(root==null)
return 0;
int leftTreeDepth=dfs(root.left);
int rightTreeDepth=dfs(root.right);
if(root.left==null&&root.right==null)
return 1;
if(root.left==null&&root.right!=null)
return rightTreeDepth+1;
if(root.left!=null&&root.right==null)
return leftTreeDepth+1;
return Math.min(leftTreeDepth,rightTreeDepth)+1;
}
public int minDepth(TreeNode root) {
int ans=dfs(root);
return ans;
}
}
class Solution {
int ans=0;
public void dfs(Node root,int level){
if(root==null)
return;
if(root.children.isEmpty()){
if(ans<level)
ans=level;
}
for(int i=0;i<root.children.size();i++){
dfs(root.children.get(i),level+1);
}
}
public int maxDepth(Node root) {
dfs(root,1);
return ans;
}
}