题目110
class Solution {
public:
int getHeight(TreeNode* node) {
if (node == NULL) {
return 0;
}
int leftHeight = getHeight(node->left);
if (leftHeight == -1) return -1;
int rightHeight = getHeight(node->right);
if (rightHeight == -1) return -1;
return abs(leftHeight - rightHeight) > 1 ? -1 : 1 + max(leftHeight, rightHeight);
}
bool isBalanced(TreeNode* root) {
return getHeight(root) == -1 ? false : true;
}
};
题目:257
class Solution {
private:
void traversal(TreeNode cur,string path,vector &result){
path+=to_string(cur->val);
if(cur->leftNULL&&cur->rightNULL){
result.push_back(path);
return;
}
if(cur->left) traversal(cur->left,path +“->”,result);
if(cur->right) traversal(cur->right,path +“->”,result);
}
public:
vector binaryTreePaths(TreeNode root) {
vector result;
string path;
if(root==NULL) return result;
traversal(root,path,result);
return result;
}
};
题目:404
class Solution {
public:
int sumOfLeftLeaves(TreeNode* root) {
if (root == NULL) return 0;
if (root->left == NULL && root->right== NULL) return 0;
int leftValue = sumOfLeftLeaves(root->left); // 左
if (root->left && !root->left->left && !root->left->right) {
leftValue = root->left->val;
}
int rightValue = sumOfLeftLeaves(root->right); // 右
int sum = leftValue + rightValue; // 中
return sum;
}
};