#include <iostream>
#include <stack>
using namespace std;
struct TreeNode
{
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int a) :val(a), left(NULL), right(NULL) {};
};
后序遍历的递归方法
void backOrder(TreeNode * p)
{
if (!p)return;
backOrder(p->left);
backOrder(p->right);
cout << p->val << " ";
}
后序遍历的非递归方法
void backOrder_normal(TreeNode * p)
{
if (!p)return;
stack<TreeNode*>help1;
stack<TreeNode*>help2;
help1.push(p);
while (!help1.empty()) {
p = help1.top();
help1.pop();
if (p->left != NULL)
help1.push(p->left);
if (p->right != NULL)
help1.push(p->right);
help2.push(p);
}
while (!help2.empty()) {
cout << help2.top()->val << " ";
help2.pop();
}
}