1. 程式人生 > 實用技巧 >leetcode 6:binary-tree-postorder-traversal

leetcode 6:binary-tree-postorder-traversal

題目描述

求給定的二叉樹的後序遍歷。 例如: 給定的二叉樹為{1,#,2,3},
   1↵    ↵     2↵    /↵   3↵
返回[3,2,1]. 備註;用遞迴來解這道題太沒有新意了,可以給出迭代的解法麼? 題目分析: 這道題屬於常規題,就不講了。 程式碼如下:
 1 vector<int> postorderTraversal(TreeNode* root) {
 2         vector<int> v;
 3         if(root == NULL)
 4             return
v; 5 stack<TreeNode*> s; 6 TreeNode* cur = root; 7 TreeNode* prev = NULL; 8 while(cur||!s.empty()) 9 { 10 while(cur) 11 { 12 s.push(cur); 13 cur = cur->left; 14 } 15 TreeNode* top = s.top();
16 if(top->right == NULL||top->right == prev) 17 { 18 v.push_back(top->val); 19 prev = top; 20 s.pop(); 21 } 22 else 23 { 24 cur = top->right; 25 } 26 }
27 return v; 28 }