本文共 512 字,大约阅读时间需要 1 分钟。
题目:判断二叉树是不是平衡树
思路:采用后续遍历的方式,求出左右子节点的返回值,如果左子树的返回值为-1,或者右子树的返回值为-1,或者左右子树的返回值之差的绝对值大于1,则返回-1 。否则返回max(左子树高度,右子树高度)+1。
class Solution {public: int Balanced(TreeNode* root){ int l = 0, r = 0; if(root->left!=NULL) l = Balanced(root->left); if(root->right!=NULL) r = Balanced(root->right); if(l==-1||r==-1||abs(l-r)>1) return -1; l = l>r?l:r; return l+1; } bool isBalanced(TreeNode* root) { if(!root) return 1; return Balanced(root)!=-1; }};
转载地址:http://dirai.baihongyu.com/