二叉树的前序遍历(递归实现):
class Solution {
public:
vector<int> res;
vector<int> preorderTraversal(TreeNode* root) {
if(root!=NULL){
res.push_back(root->val);
preorderTraversal(root->left);
preorderTraversal(root->right);
}
return res;
}
};
二叉树的前序遍历(非递归实现):
借助栈来实现,压入顺序为根节点,右节点,左节点。出栈顺序对应为(根、左、右)
class Solution {
public:
vector<int> res;
vector<int> preorderTraversal(TreeNode* root) {
if(root==NULL){
return res;
}
stack<TreeNode*> tmp;
tmp.push(root);
while(!tmp.empty()){
auto x=tmp.top();
tmp.pop();
res.push_back(x->val);
if(x->right){