
判斷每個節點的左右子樹最大深度差,遞歸,dfs1形參root可判斷整棵樹是否為平衡二叉樹,邊界傳回0,提前不滿足傳回,最後傳回,提前不滿足用深度,dfs2求最大深度,形參root可以求出root樹的最大深度
精确定義
dfs1,形參root判斷root樹是否為平衡二叉樹,空節點邊界傳回true,按照深度提前傳回
dfs2,形參root求出root數的最大深度,root為空邊界傳回0,按照深度不符合提前傳回,最後傳回
class Solution {
public:
bool isBalanced(TreeNode* root) {
return dfs1(root);
}
bool dfs1(TreeNode*root){
if(!root)return true;
if(abs(dfs2(root->left)-dfs2(root->right))>1)return false;
return dfs1(root->left)&&dfs1(root->right);
}
int dfs2(TreeNode*root){
if(!root)return 0;
return 1+max(dfs2(root->left),dfs2(root->right));
}
};
踩過的坑
abs的形參隻有一個,二叉搜尋樹需要每個節點的左右子樹深度差小于等于1