思路:
1. 不让用递归, 改用堆栈
2. 堆栈也没必要显示给出, 模拟也是可以的
代码:
class Solution { public: vector<int> preorderTraversal(TreeNode *root) { vector<int> res; if(root == NULL) return res; stack<TreeNode*> stc; stc.push(root); while(!stc.empty()) { TreeNode* node = stc.top(); stc.pop(); if(node != NULL) res.push_back(node->val); if(node->right != NULL) stc.push(node->right); if(node->left != NULL) stc.push(node->left); } return res; } };
后记:
写完之后才发现自己画蛇添足了
假如stc 用向量模拟的话, stc 中存储的内容就是前序遍历, 没必须再一个个的放入 res 了, 直接输出 stc 就 OK 了