-
513.找树左下角的值
-
class Solution { public: int ret = -1; int ans=1; void dg(TreeNode* node, int step) { if (node->left != NULL) { if (node->left->right == NULL && node->left->left == NULL) { if (step > ret) { ret = step; ans = node->left->val; } } if (node->right != NULL) { if (node->right->right == NULL && node->right->left == NULL) { if (step > ret) { ret = step; ans = node->right->val; } } } if (node->left) { step++; dg(node->left, step); step--; } if (node->right) { step++; dg(node->right, step++); step--; } } return; } int findBottomLeftValue(TreeNode* root) { dg(root, 0); if (root->left == NULL && root->right == NULL) return root->val; if() return ans; } };
-
112. 路径总和
-
class Solution { public: int flag; int target; bool dfs(TreeNode* node, int count) { if (!node->left && !node->right) { if (count == target) return 1; return 0; } if (node->left) { if (dfs(node->left, count + node->left->val)) return 1; } if (node->right) { if (dfs(node->right, count + node->right->val)) return 1; } return 0; } bool hasPathSum(TreeNode* root, int targetSum) { if (root == NULL) return 0; target = targetSum; return dfs(root, root->val); } };
-
113.路径总和ii
-
class Solution { public: vector<vector<int>> ret; vector<int> ans; int target; void dfs(TreeNode* node, int count) { if (!node->left && !node->right) { if (count == target) { ret.push_back(ans); } return; } if (node->left) { ans.push_back(node->left->val); dfs(node->left, count + node->left->val); ans.pop_back(); } if (node->right) { ans.push_back(node->right->val); dfs(node->right, count + node->right->val); ans.pop_back(); } return; } vector<vector<int>> pathSum(TreeNode* root, int targetSum) { if (root == NULL) return {}; target = targetSum; ans.push_back(root->val); dfs(root, root->val); return ret; } };