根据栈的先进后出特性,可以使用栈来实现二叉树的中序遍历和后序遍历。
根据队列的先进先出特性,可以使用队列来实现二叉树的前序遍历。
一、使用栈实现二叉树的中序遍历:
原理:
1)根结点入栈
2)左子树入栈
3)左子树岀栈
4)根结点出栈
5)右子树入栈
6)右子树岀栈
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef int DATA;
typedef unsigned int U32;
typedef unsigned char U8;
#define SUCESS 0
#define ERROR_PARAM -1 // 参数错误
#define ERROR_MEMO -2 // 内存错误
#define ERROR_EMPTY 1 // 栈已空
#define ERROR_FULL 2 // 栈已满
#define MAX_NUM 0x100
#define ARRAY_NUM(array) (sizeof(array)/sizeof(array[0]))
typedef struct BinaryTreeNodeTag
{
struct BinaryTreeNodeTag* lChild;
struct BinaryTreeNodeTag* rChild;
DATA data;
}BiTreeNode;
typedef struct StackTag
{
U32 u32ElementSize;
U32 u32MaxNum;
int iTop;
U8* pcStackBuffer;
}Stack,* PStack;
#defi