找树左下角的值
代码
class Solution {
public:
int findBottomLeftValue(TreeNode* root) {
queue<TreeNode*> que;
if (root != NULL) que.push(root);
int result = 0;
while (!que.empty()) {
int size = que.size();
for (int i = 0; i < size; i++) {
TreeNode* node = que.front();
que.pop();
if (i == 0) result = node->val;
if (node->left) que.push(node->left);
if (node->right) que.push(node->right);
}
}
return result;
}
};
路径总和
代码
class Solution {
private:
bool traversal(TreeNode* cur, int count)
{
if(! cur->left && !cur->right && count ==0)return true;
if(!cur->left && !cur->right) return false;
if(cur->left)
{
count -= cur->left->val;
if(traversal(cur->left,count)) return true;
count += cur->left->val;
}
if(cur->right)
{
count -= cur->right->val;
if(traversal(cur->right,count)) return true;
count += cur->left->val;
}
}
public:
bool hasPathSum(TreeNode* root, int targetSum) {
if(root == NULL) return false;
return traversal(root,sum - root->val);
}
};
从中序与后序遍历序列构造二叉树
代码