binary-tree-preorder-traversal
//二叉树前序遍历非递归
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: vector<int> preorderTraversal(TreeNode *root) { vector<int> res ; if(!root) return res; stack<TreeNode*> s; TreeNode *p = root; while(p||!s.empty()){ if(p){ s.push(p); res.push_back(p->val); p = p->left; } else{ p = s.top(); s.pop(); p = p->right; } } return res; } };