二叉树的基本操作及应用
构建如下图二叉树,要求使用括号表示法输入二叉树并转化为二叉树的链式存储结构;横向输出二叉树;查找二叉树中的给定值的结点;求二叉树的高度;统计二叉树中的节点个数;中序遍历该二叉树(采用递归和非递归算法);层序遍历该二叉树;最后编写main函数对以上功能进行测试。
#include<stdio.h>
#include<malloc.h>
#define MaxSize 100
typedef char ElemType;
typedef char ElemType;
typedef struct node
{
ElemType data; //数据元素
struct node *lchild; //指向左孩子结点
struct node *rchild; //指向右孩子结点
} BTNode;
void CreateBTNode(BTNode * &b,ElemType *str)
{
BTNode *St[MaxSize],*p=NULL;
int top=-1,k,j=0;
char ch;
b=NULL; //建立的二叉树初始时为空
ch=str[j];
while (ch!='\0') //str未扫描完时循环
{
switch(ch)
{
case '(':top++;St[top]=p;k=1; break; //为左孩子结点
case ')':top--;break;
case ',':k=2; break; //为孩子结点右结点
default:p=(BTNode *)malloc(sizeof(BTNode));
p->data=ch;p->lchild=p->rchild=NULL;
if (b==NULL) //*p为二叉树的根结点
b=p;
els