fanfank / leetcode

Greatness from Basis comes
173 stars 95 forks source link

binary-tree-preorder-traversal 前序遍历 #1

Closed zchrissirhcz closed 9 years ago

zchrissirhcz commented 10 years ago

这题用一个stack可以解决问题,感觉你的代码中用了queue保存节点,没有必要,换成指针就好了: vector preorderTraversal(TreeNode* root){ v.clear(); stack<TreeNode> s; TreeNode\ p=root; while(p!=NULL || !s.empty()){ while(p!=NULL){ v.push_back(p->val); s.push(p); p=p->left; } if(!s.empty()){ p=s.top(); s.pop(); p=p->right; } } return v; }

fanfank commented 10 years ago

非常感谢指出了这题的解法很繁琐,你的解法我乍一看没问题,不过没有自己上leetcode验证过。 另外如果只使用一个stack,我也想到了一种更加简单的解法,已经更新并commit了,参见这里的solution2:https://github.com/fanfank/leetcode/blob/master/binary-tree-preorder-traversal.cpp