二叉树 后序遍历 的两种方法:
1.递归 后序遍历二叉树;
2.利用链栈 非递归 后序遍历二叉树
以下代码 在 vs2010 测试通过:
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
typedef struct TreeNode{
int data;
struct TreeNode *lchild,*rchild;
}TreeNodePro;
typedef struct StackNode{
TreeNodePro *treenode;
struct StackNode *next;
}StackNodePro;
typedef struct StackList{
int count;
StackNodePro *top;
}StackListPro;
//递归 建立二叉树
void create_behorder_tree(TreeNodePro **tree){
int em ;
int result;
printf("请输入二叉树节点的数值:");
result = scanf("%d",&em);
if(result != 0 ){
if(em == 0){
*tree = NULL;
}else{
*tree = (TreeNodePro *)malloc(sizeof(TreeNodePro));
if(*tree != NULL){
(*tree)->data = em;
create_behorder_tree((&(*tree)->lchild));
create_behorder_tree((&(*tree)->rchild));
}
}
}
}
//递归 后序遍历二叉树
void recursive