代码随想录Day18——513.找树左下角的值 112. 路径总和 106.从中序与后序遍历序列构造二叉树
513.找树左下角的值
- 递归法,按照三部曲走,不理解回溯;
- 递归求深度的写法,我们在110.平衡二叉树 中详细的分析了深度应该怎么求,高度应该怎么求。
- 递归中其实隐藏了回溯,在257. 二叉树的所有路径 中讲解了究竟哪里使用了回溯,哪里隐藏了回溯。
- 层次遍历,在二叉树:层序遍历登场!深度讲解了二叉树层次遍历。
112. 路径总和
class Solution {
public:
void FindPath(TreeNode* Cur,vector<int>& Sum,int Sum1){
Sum1+=Cur->val;
if(Cur->left==NULL && Cur->right==NULL){
Sum.push_back(Sum1);
return;
}
if(Cur->left!=NULL) FindPath(Cur->left,Sum,Sum1);
if(Cur->right!=NULL) FindPath(Cur->right,Sum,Sum1);
}
bool hasPathSum(TreeNode* root, int targetSum) {
vector<int> Sum;
int Sum1=0;
if(root==NULL) return false;
FindPath(root,Sum,Sum1);
for(int i=0;i<Sum.size();i++){
if(Sum[i]==targetSum) return true;
}
return false;
}
};
106.从中序与后序遍历序列构造二叉树
- 中序数组大小一定是和后序数组的大小相同的
- 前序:中左右,适合从上往下走;后序:左右中,适合从下往上走,带返回值;中序:左中右,