今天在leetcode刷题
1–
本来思路很清晰,用递归的方式实现前序遍历,主要就是构造一个vector<Treenode*>来储存root再进行修改,但是改了很久发现修改后Treenode不完全,因为构造的vector没有值。
void getnums(TreeNode* root, vector<TreeNode*> ret){
if (root != NULL){
ret.push_back(root);
getnums(root->left, ret);
getnums(root->right, ret);
}}
2–
后来才发现,原来函数全是对于形参ret进行修改,而没有对实参进行函数外的修改。大无语,后来+&,把引用加上去,就可以实现对ret的修改了,另外返回值为void,也是因为直接对ret进行修改,所以不用返回值,防止递归异常。
void getnums(TreeNode* root, vector<TreeNode*> &ret){
if (root != NULL){
ret.push_back(root);
getnums(root->left, ret);
getnums(root->right, ret);
}
}
搞定~🤗