题目描述

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

 

相关文章:

  • 2022-12-23
  • 2021-10-14
  • 2021-07-16
  • 2021-11-24
  • 2021-09-10
  • 2021-11-26
  • 2021-12-16
  • 2022-03-02
猜你喜欢
  • 2021-12-29
  • 2021-07-12
  • 2021-11-13
  • 2022-12-23
  • 2022-02-03
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案