- 前序遍历的本质就是根 左 右
- 如果考虑使用栈来实现的, 需要先将右孩子存起来,再存左孩子,依次pop的时候就是先处理左孩子,然后是右孩子
class Solution {
public:
vector<int> preorderTraversal(TreeNode* root) {
if (nullptr == root) {
return vector<int>();
}
vector<int> result;
stack<TreeNode*> stk;
stk.push(root);
while (!stk.empty()) {
TreeNode* tmp = stk.top();
stk.pop();
result.push_back(tmp->val);
if (tmp->right) {
stk.push(tmp->right);
}
if (tmp->left) {
stk.push(tmp->left);
}
}
return result;
}
};