由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 麻烦大家帮看看这段代码的问题
相关主题
请教一道Leetcode 题,多谢leetcode一题,自己编译没问题,leetcode总是编译出错。请高手看看
[leetcode] Binary Tree from Inorder & Postorder Traversal这个inorder traversal 有错嘛,为什么leetcode 总报memory limit exceed?
再问个C++的基础问题(in order traversal)java初学者问到leetcode sum root to leaf题
leetcode中的binary tree level order traverse II总是有run t【leetcode restore IP address】为什么这种情况一定要用tmp?
请教大家一个问题:Maximum Height (Depth) of a Binary Tree Using PreOrder Traversal我这个按层打印的有什么问题
看着简单老是写不对的Binary Tree Zigzag Level Order Traversal大家leetcode的test case都过得去么?我的怎么经常不成?
Construct Binary Tree from Preorder and Inorder Traversal算法复杂度?flattern binary tree to linked list (leetcode)
这道题如何得到最优解unique binary tree 2 (leetcode)
相关话题的讨论汇总
话题: topnode话题: treenode话题: null话题: result话题: root
进入JobHunting版参与讨论
1 (共1页)
t*********3
发帖数: 87
1
是leetcode的题Binary Tree Preorder Traversal
下面的代码能通过leetcode的测试,但是朋友看过说“代码有很大的问题”,然后着急
赶飞机就没来得及给我讲解。因为我之前都没有写过C++,所以也不太明白朋友的意思
。麻烦大家给我讲一下问题所在。我知道论坛里有个别技术牛人喜欢装X,说话挺不客
气的
,大家就“取其精华去其糟粕”只听他们的技术讲解就可以了。
其实我的疑问之一就是声明stack s;这句就这么直接写就行了吗?
class Solution {
public:
vector preorderTraversal(TreeNode* root) {
result.clear();
if(root == NULL) {return result;}
s.push(root);
preorder();
return result;
}

private:
stack s;
vector result;

void preorder(void) {
TreeNode* topNode;
while(!s.empty()) {
topNode = s.top();
result.push_back(topNode->val);
s.pop();
if(topNode->right != NULL) {
s.push(topNode->right);
}
if(topNode->left != NULL) {
s.push(topNode->left);
}
}
return;
}
};
e***i
发帖数: 231
2
能通过leetcode的测试 == 没有问题
至于coding style,这事儿没法细说
a******n
发帖数: 103
3
iterative写在一个函数里面就可以了啊。
为什么要有preorder(void)?
private member s和result都可以直接写在function里面啊.
class Solution是leetcode测试程序接口,不能真当一个class。
给你改改:
class Solution{
public:
vector preorderTraversal(TreeNode* root) {
stack s;
vector result;
if (!root)
return result;
s.push(root);
while(!s.empty()) {
TreeNode * topNode = s.top();
result.push_back(topNode->val);
s.pop();
if(topNode->right != NULL) {
s.push(topNode->right);
}
if(topNode->left != NULL) {
s.push(topNode->left);
}
}
return result;
}
};
t*********3
发帖数: 87
4
我认为朋友说的就是你这个意思。他可能担心class中别的函数改了s和result的内容,
所以想把他俩放到函数中。

【在 a******n 的大作中提到】
: iterative写在一个函数里面就可以了啊。
: 为什么要有preorder(void)?
: private member s和result都可以直接写在function里面啊.
: class Solution是leetcode测试程序接口,不能真当一个class。
: 给你改改:
: class Solution{
: public:
: vector preorderTraversal(TreeNode* root) {
: stack s;
: vector result;

1 (共1页)
进入JobHunting版参与讨论
相关主题
unique binary tree 2 (leetcode)请教大家一个问题:Maximum Height (Depth) of a Binary Tree Using PreOrder Traversal
leetcode combinationsum2 超时看着简单老是写不对的Binary Tree Zigzag Level Order Traversal
leetcode 3sumConstruct Binary Tree from Preorder and Inorder Traversal算法复杂度?
请教下leetcode Permutations II这道题如何得到最优解
请教一道Leetcode 题,多谢leetcode一题,自己编译没问题,leetcode总是编译出错。请高手看看
[leetcode] Binary Tree from Inorder & Postorder Traversal这个inorder traversal 有错嘛,为什么leetcode 总报memory limit exceed?
再问个C++的基础问题(in order traversal)java初学者问到leetcode sum root to leaf题
leetcode中的binary tree level order traverse II总是有run t【leetcode restore IP address】为什么这种情况一定要用tmp?
相关话题的讨论汇总
话题: topnode话题: treenode话题: null话题: result话题: root