g********E 发帖数: 178 | 1 recursive的,用leetcode online judge里的格式,结果写成了这样:
//help function
void doinorder(TreeNode *root, vector &res){
if (root == NULL) return;
doinorder(root->left, res);
res.push_back(root->val);
doinorder(root->right, res);
}
//main function
vector inorderTraversal(TreeNode *root){
vector res;
doinorder(root, res);
return res;
}
--------
是不是太复杂了,有什么可以简化的么?要返回一个空vector是不是只能先新建一个空
的?多谢指教了! |
d**e 发帖数: 6098 | 2 你觉得复杂在哪里?我不觉得有什么问题...
【在 g********E 的大作中提到】 : recursive的,用leetcode online judge里的格式,结果写成了这样: : //help function : void doinorder(TreeNode *root, vector &res){ : if (root == NULL) return; : doinorder(root->left, res); : res.push_back(root->val); : doinorder(root->right, res); : } : //main function : vector inorderTraversal(TreeNode *root){
|
g********E 发帖数: 178 | 3 函数参数都拖着result vector,不知道是不是用static更好?
【在 d**e 的大作中提到】 : 你觉得复杂在哪里?我不觉得有什么问题...
|
g********E 发帖数: 178 | 4 还有
if(!root) 和 if(root == NULL) 是完全等价的么? |
d**e 发帖数: 6098 | 5 我觉得static更不好,因为如果大家都call同一个method就share了这个vector,所以还
是用自己的vector好.
【在 g********E 的大作中提到】 : 函数参数都拖着result vector,不知道是不是用static更好?
|
k****e 发帖数: 116 | 6 你这个main function返回一个local的vector的value,这样开销比较大吧。用new然后
返回一个pointer,我觉得更好些
【在 g********E 的大作中提到】 : recursive的,用leetcode online judge里的格式,结果写成了这样: : //help function : void doinorder(TreeNode *root, vector &res){ : if (root == NULL) return; : doinorder(root->left, res); : res.push_back(root->val); : doinorder(root->right, res); : } : //main function : vector inorderTraversal(TreeNode *root){
|
g********E 发帖数: 178 | 7 en,有理!
【在 d**e 的大作中提到】 : 我觉得static更不好,因为如果大家都call同一个method就share了这个vector,所以还 : 是用自己的vector好.
|
g********E 发帖数: 178 | 8 main function格式是按leetcode给的格式来得。如果我用new,写出来是这样吗?
void doinorder(TreeNode *root, vector * res){
...
*res.push_back(root->val);
}
vector* inorderTraversal(TreeNode *root){
vector *res = new vector;
...
return res;
}
【在 k****e 的大作中提到】 : 你这个main function返回一个local的vector的value,这样开销比较大吧。用new然后 : 返回一个pointer,我觉得更好些
|
j********x 发帖数: 2330 | 9 RVO
【在 k****e 的大作中提到】 : 你这个main function返回一个local的vector的value,这样开销比较大吧。用new然后 : 返回一个pointer,我觉得更好些
|