513.找树左下角值
题目链接:513. 找树左下角的值 - 力扣(LeetCode)
代码实现:
class Solution {
public:
int findBottomLeftValue(TreeNode* root) {
queue<TreeNode*>que;
int result;
if(root != NULL)que.push(root);
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;
}
};
112.路径总和
题目链接:513. 找树左下角的值 - 力扣(LeetCode)
代码实现:
class Solution {
public:
bool traversal(TreeNode* node,int count){
if(node->left == NULL && node->right== NULL && count == 0)return true;
if(node->left ==NULL && node->right == NULL && count != 0 )return false;
if(node->left){
count = count - node->left->val;
if(traversal(node->left,count))return true;
count = count + node->left->val;
}
if(node->right){
count = count - node->right->val;
if(traversal(node->right,count))return true;
count = count + node->right->val;
}
return false;
}
bool hasPathSum(TreeNode* root, int targetSum) {
if(root == NULL) return false;
return traversal(root,targetSum - root->val);
}
};
106.从中序与后序遍历构造二叉树
代码实现:
lass Solution {
private:
TreeNode* traversal(vector<int>&inorder,vector<int>&postorder){
if(postorder.size() ==0)return NULL;
int rootvalue = postorder[postorder.size() - 1];
TreeNode* root = new TreeNode(rootvalue);
if(postorder.size() == 1) return root;
int index;
for(index = 0;index<inorder.size();index++){
if(inorder[index] == rootvalue)break;
}
vector<int>leftinorder(inorder.begin(),inorder.begin() + index);
vector<int>rightinorder(inorder.begin() + index + 1,inorder.end());
postorder.resize(postorder.size()-1);
vector<int>leftposorder(postorder.begin(),postorder.begin() + leftinorder.size());
vector<int>rightposorder(postorder.begin() + leftinorder.size() + 1,leftposorder.end());
root->left = traversal(leftinorder,leftposorder);
root->right = traversal(rightinorder,rightposorde);
return root;
}
public:
TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {
if (inorder.size() == 0 || postorder.size() == 0) return NULL;
return traversal(inorder, postorder);
}
};
今天把这三题弄明白花了不少时间,思路下次整理更新