classSolution{intback_traversal(TreeNode* root){if(root==NULL)return0;//空节点返回高度为0int left =back_traversal(root->left);//获得左子树的高度if(left==-1)return-1;//如果左子树高度为-1,即不平衡,直接返回-1int right =back_traversal(root->right);//获得右子树的高度if(right==-1)return-1;//如果右子树高度为-1,也返回-1returnabs(left-right)>1?-1:1+max(left,right);//如果左右子树都是平衡,但是左右子树高度差大于1,说明以中节点为头的子树为非平衡子树,返回-1.}public:boolisBalanced(TreeNode* root){returnback_traversal(root)==-1?false:true;}};
classSolution{public:intsumOfLeftLeaves(TreeNode* root){if(root==NULL)return0;if(!root->right&&!root->left)return0;int left =sumOfLeftLeaves(root->left);int right =sumOfLeftLeaves(root->right);if(root->left&&!root->left->right&&!root->left->left)return left+right+root->left->val;elsereturn left+right;}};