数据结构的二叉树中,怎么输入字符序列,建立二叉链表?

论坛 期权论坛 期权     
kaihua1010   2018-4-26 13:58   3155   1
求 具体的例子。越详细越好。
分享到 :
0 人收藏

1 个回复

倒序浏览
2#
happy_chllsg  4级常客 | 2018-4-30 01:56:21 发帖IP地址来自
#include
#include

#define OVERFLOW -1
#define OK 1
#define ERROR 0

typedef int Status;
typedef char TElemType;
typedef struct BiTNode
{
TElemType data;
struct BiTNode *lchild;//左孩子指针
struct BiTNode *rchild;// 右孩子指针
}BiTNode;
typedef BiTNode *BiTree;

Status CreateBiTree(BiTree &T)
{//按给定的带空指针标记的先序序列建二叉链表
char ch;
    ch=getchar();
    if (ch==' ') T = NULL;
    else {
      if (!(T = (BiTNode *)malloc(sizeof(BiTNode))))
        exit(OVERFLOW);
      T->data = ch;              // 生成根结点
      CreateBiTree(T->lchild);   // 构造左子树
      CreateBiTree(T->rchild);   // 构造右子树
    }
    return OK;
} // CreateBiTree

void Display(TElemType& e)
{
printf("%c\t",e);
}

void InOrderTraverse (BiTree T, void( *visit)(TElemType& e))
{ // 先序遍历二叉树
      if (T==NULL)  return;
      InOrderTraverse(T->lchild, visit); // 遍历左子树
   visit(T->data); // 访问根结点
      InOrderTraverse(T->rchild, visit);  // 遍历右子树
}

void main()
{
BiTree R;
printf("输入带空指针标记的先序序列:(例如AB C  D  )\n");
CreateBiTree(R);
printf("该二叉树的中序序列为:\n");
InOrderTraverse(R,Display);
printf("\n");
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP