题解 | #判断是不是平衡二叉树#
判断是不是平衡二叉树
https://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222
W:
判断需要先求出当前节点的高度,1+max(left,right),后序处理返回的值,判断高度是否相差大于1
采用-1标记,提前返回
N
空树为平衡二叉树
全局变量用于查看返回值是否相差大于1
class Solution { public: bool res=true; int traversal(TreeNode* le){ if(!le){ return 0; } int left=traversal(le->left); if(left==-1) return -1;//提前返回 int right=traversal(le->right); if(right==-1) return -1; if(abs(left-right)>1){ res=false; return -1;//-1标记,表示已经不是平衡树了 } return 1+max(left,right); } bool IsBalanced_Solution(TreeNode* pRoot) { if(pRoot==nullptr){ return true; } traversal(pRoot); return res; } };