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     }

 

posted @ 2020-08-13 14:36  请叫我小小兽  阅读(151)  评论(0编辑  收藏  举报