LeetCode 589. N叉樹的前序遍歷(前序遍歷的迭代實現)
阿新 • • 發佈:2020-09-07
思考:由於前序遍歷的思路與深度優先搜尋類似,所以前序遍歷的迭代形式與深度優先搜尋的迭代形式類似。
而深度優先的過程與出棧入棧的過程很類似,我們就可以利用棧來完成深度優先搜尋的迭代
1.遞迴
class Solution { public: vector<int> preorder(Node* root) { vector<int> tree; preorder(root,tree); return tree; } void preorder(Node*root , vector<int> &tree){ if(root==NULL) return; else{ tree.push_back(root->val); } for(int i = 0;i<root->children.size();i++){ preorder(root->children[i],tree); } return; } };
2.迭代
class Solution { public: vector<int> preorder(Node* root) { vector<int> tree; stack<Node*> st; if(root!=NULL) st.push(root); while(st.empty()==false){ Node* temp = st.top(); st.pop(); tree.push_back(temp->val); for(int i = temp->children.size()-1;i>=0;i--){ st.push(temp->children[i]);//從最右結點往最左結點插入 } } return tree; } };