在此代码中带有第四行的作用是什么?
class Solution {
public:
TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
this->preorder = preorder;
for(int i = 0; i < inorder.size(); i++)
dic[inorder[i]] = i;
return recur(0, 0, inorder.size() - 1);
}
private:
vector<int> preorder;
unordered_map<int, int> dic;
TreeNode* recur(int root, int left, int right) {
if(left > right) return nullptr; // 递归终止
TreeNode* node = new TreeNode(preorder[root]); // 建立根节点
int i = dic[preorder[root]]; // 划分根节点、左子树、右子树
node->left = recur(root + 1, left, i - 1); // 开启左子树递归
node->right = recur(root + i - left + 1, i + 1, right); // 开启右子树递归
return node; // 回溯返回根节点
}
};
作者:Krahets
链接:https://leetcode.cn/leetbook/read/illustration-of-algorithm/99ljye/
将buildTree
函数的preorder
参数的引用赋给类中的局部变量preorder
。如果没有this
指针就无法区分到底是参数的,还是类中含有的。
那我是不是把其中一个换个名字就不会有这种问题了
@象羊: 嗯,是的,就可以不用使用this
强调是类里面的成员了。