题目描述
求给定的二叉树的后序遍历。
例如:
给定的二叉树为{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 }