二叉树结构
/*二叉树的二叉链表存储表示*/
typedef int ElemType;
typedef struct BiTNode {
ElemType data;
struct BiTNode *lchild, *rchild;
} BiTNode, *BiTree;
//构造二叉链表表示二叉树
//要求以先序输入
void CreateBiTree(BiTree &T);
//前序非递归白遍历二叉树
void PreOrderTree_norecursive(BiTree T, void(*visit)(ElemType e));
//中序非递归遍历二叉树
void InOrderTree_norecursive(BiTree T, void (*visit)(ElemType e));
//后序非递归遍历二叉树
void PostOrderTree_norecursive(BiTree T, void (*visit)(ElemType e));
//层序遍历二叉树
void LevelOrderTree(BiTree T, void (*visit)(ElemType e));
前序
前序的顺序为 中左右,显然可以采用栈的先进后出的特性。基本思路:从根节点开始,访问当前结点并使其入栈,再判断是否有左子树,若存在左子树,将指针指向左子树的根节点。若没有左子树,则取出栈顶元素,使指针指向栈顶元素的右子树。直到栈为空且当前结点为空。
//前序非递归白遍历二叉树
void PreOrderTree_norecursive(BiTree T, void