1.构造一棵二叉树,树的形态如下图所示,打印出前序遍历、中序遍历、后序遍历的遍历序列。
2.选择一种遍历方式计算该树中叶子结点的个数,并打印出叶子结点。
3.编写一个查找算法,查找数据“E”是否存在。
#include"stdlib.h"
#include"stdio.h"
typedef char DataType;
#include"BiTree.h"
#define MaxStackSize 100
/*typedef char ElemType;*/
typedef BiTreeNode* ElemType;
#include "SeqStack.h"
#include "LinQueue.h"
void main()
{
BiTreeNode *root;
Initiate(&root);
if(root!=NULL)
root=createbintree();
printf("先序遍历:");
PreOrder(root,visit); //先序遍历
printf("\n");
printf("中序遍历:");
InOrder(root,visit); //中序遍历
printf("\n");
printf("后序遍历:");
PostOrder(root,visit); //后序遍历
printf("\n");
printf("二叉树中结点个数为:%d\n",numofnode(root));
printf("二叉树中叶子结点个数为:%d\n",preleafnum(root));
printf("\n/**************************************************************************************/\n\n");
LayerOrder(root);
printf("非递归先序遍历:");
PreOrderByStack(root);
printf("非递归中序遍历:");
InOrderByStack(root);
printf("队列结构层序遍历为:");
LayerOrder2(root);
printf("\n");
Destroy(&root);
}
typedef struct Node
{
DataType data; /*数据域*/
struct Node *leftChild; /*左子树指针*/
struct Node *rightChild; /*右子树指针*/
}BiTreeNode; /*结点的结构体定义*/
void Initiate(BiTreeNode **root) /*初始化创建二叉树的头结点*/
{
*root=(BiTreeNode *)malloc(sizeof(BiTreeNode));
(*root)->leftChild=NULL;
(*root)->rightChild=NULL;
}
void Destroy(BiTreeNode **root)
{
if((*root)!=NULL&&(*root)->leftChild!=NULL)
Destroy(&(*root)->leftChild);
if((*root)!=NULL&a