一、
二叉树定义
typedef struct TNode *Position;
typedef Position BinTree;
struct TNode{
ElementType Data;
BinTree Left;
BinTree Right;
int flag;
};
代码
void PostorderTraversal( BinTree BT )
{
BinTree T=BT;
Stack s=CreateStack();//创建一个栈
while(T||!IsEmpty(s))
{
while(T)
{
Push(s,T);//入栈
T=T->Left;
}
T=Peek(s);//返回栈顶
if (T->flag != 1) {
T->flag = 1;
T = T->Right;
}
else {
T = Pop(s);//出栈并返回
printf(" %c",T->Data);
T = nullptr;
}
}
}
二、
二叉树定义
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
};
代码
vector<int> postorderTraversal(TreeNode* root) {
TreeNode* T=root,* r=nullptr;
vector<int>data;
vector<TreeNode*>BT;
while(T||!BT.empty()){
while(T){
BT.push_back(T);
T=T->left;
}
T=BT.back();
if(T->right&&T->right!=r){
T=T->right;
}else{
r=T;
BT.pop_back();
data.push_back(T->val);
T=nullptr;
}
}
return data;
}
(因为是从不同地方的题目对应的代码cv过来的,所以题目给的二叉树命名会有点不一样)