leetcode 144 二叉树前序遍历
顺序: 根->左->右
使用一个栈保存待访问的节点,使用p保存当前正在访问的节点,大致思路和DFS遍历很类似,就是一路沿左子树向下,直到左子节点为空再通过栈进行回退操作,直到栈为空,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
class Solution { public: vector<int> preorderTraversal(TreeNode* root) {
if(!root) return res; stack<TreeNode*> s; TreeNode *p = root; while(!s.empty() || p) { if(p) { s.push(p); res.push_back(p->val); p = p->left; } else { TreeNode *temp = s.top(); s.pop(); p = temp->right; } } return res; } private: vector<int> res; };
|