解法一: 递归(recursion)
以preorder为例:
class Solution {
public:
void traversal(vector<int>& preorder, TreeNode* curr){
if(curr == NULL){
return;
}
preorder.push_back(curr->val);
traversal(preorder, curr->left);
traversal(preorder, curr->right);
}
vector<int> preorderTraversal(TreeNode* root) {
vector<int> res;
traversal(res, root);
return res;
}
};
遇到的一个小问题:
为什么第一个parameter要用& ?
![]()
我的理解是, 当返回上一层的时候,preorder也返回了上一层,所以需要的是将地址直接赋给preorder, 这样即使返回上一层,preorder依旧保留所有的值
该文章讨论了一个使用C++编写的递归函数,用于执行二叉树的前序遍历。在方法中,函数接收一个整数向量引用和当前节点指针,将节点值添加到向量并递归地遍历左右子树。问题在于为何参数使用引用传递,原因是确保在递归过程中对preorder向量的修改能保留到递归返回时,保持所有节点值的完整性。
134

被折叠的 条评论
为什么被折叠?



