LeetCode 144 Binary Tree Preorder Traversal
阿新 • • 發佈:2018-11-27
題目的意思就是不用遞迴的方法輸出先序遍歷
其實遞迴本質上是在利用棧的性質,每次遞迴都是將一個函式壓入棧中。
所以我們可以用迴圈和棧模擬遞迴
class Solution { public: TreeNode* s[100005]; vector<int> ans; int tag=0; vector<int> preorderTraversal(TreeNode* root) { if(root==NULL) return ans; s[tag++]=root; TreeNode* term; while(tag>0) { term = s[tag-1]; if(s[tag-1]->val!=-999999) ans.push_back(s[tag-1]->val); (*s[tag-1]).val=-999999; if(term->left!=NULL&&term->left->val!=-999999) {s[tag++]=term->left;continue;} if(term->right!=NULL&&term->right->val!=-999999) {s[tag++]=term->right;continue;} tag--; } return ans; } };