二叉树基本操作设计及实现

论坛 期权论坛 期权     
我是风行控   2018-4-26 13:43   3455   3
总体设计:设计单向链表实现对二叉树的查询和插入操作;
要求: (1)设计单向链表,实现二叉树的生成。
(2)实现对二叉树的遍历查询;
(3)实现对二叉树叶节点的增加
317568858@qq.com  谢谢了
分享到 :
0 人收藏

3 个回复

正序浏览
4#
hu474722972  2级吧友 | 2018-4-30 02:30:56 发帖IP地址来自
c:\program files\microsoft visual studio\myprojects\chrn\chrn.cpp(202) : fatal error C1010: unexpected end of file while looking for precompiled header directive
    程序运行后有这个错误啊 。。。。同求解。。。
3#
热心网友  15级至尊 | 2018-4-30 02:30:55 发帖IP地址来自
include stdio.h
2#
jxfmw257iou  3级会员 | 2018-4-30 02:30:54 发帖IP地址来自
# include

# include

struct BTNode

{

int data;

struct BTNode * pLchild;//p是指针,L是左,child是孩子

struct BTNode * pRchild;

};

//函数声明

struct BTNode * CreateBTree(void);//创建树

void PreTraverseBTree(struct BTNode * pT);//先序遍历

void InTraverseBTree(struct BTNode * pT);//中序遍历

void PostTraverseBTree(struct BTNode * pT);//后续遍历

int main(void)

{

struct BTNode * pT = CreateBTree();

PreTraverseBTree(pT);

printf("\n");

InTraverseBTree(pT);

printf("\n");

PostTraverseBTree(pT);

return 0;

}

//创建树

struct BTNode * CreateBTree(void)

{

struct BTNode * pA = (struct BTNode * )malloc(sizeof(BTNode));

struct BTNode * pB = (struct BTNode * )malloc(sizeof(BTNode));

struct BTNode * pC = (struct BTNode * )malloc(sizeof(BTNode));

struct BTNode * pD = (struct BTNode * )malloc(sizeof(BTNode));

struct BTNode * pE = (struct BTNode * )malloc(sizeof(BTNode));

pA->data = 'A';

pB->data = 'B';

pC->data = 'C';

pD->data = 'D';

pE->data = 'E';

pA->pLchild = pB;

pA->pRchild = pC;

pB->pLchild = NULL;

pB->pRchild = NULL;

pC->pLchild = pD;

pC->pRchild = NULL;

pD->pLchild = NULL;

pD->pRchild = pE;

pE->pLchild = NULL;

pE->pRchild = NULL;

return pA;

}

//先序遍历

void PreTraverseBTree(struct BTNode * pT)

{ //先访问根节点,再先序访问左子树,最后先序访问右子树

if ( pT != NULL)

{

  printf("%c\n",pT->data);//访问根节点

  //pT->pLchild可以代表整个左子树

  PreTraverseBTree(pT->pLchild);

  PreTraverseBTree(pT->pRchild);

}

return;

}

//中序遍历

void InTraverseBTree(struct BTNode * pT)

{

if(pT != NULL )

{

  if (NULL != pT->pLchild)

  {

   InTraverseBTree(pT->pLchild);

  }

  printf("%c\n",pT->data);

  if (NULL != pT->pRchild)

  {

   InTraverseBTree(pT->pRchild);

  }

}

return;

}

//后续遍历

void PostTraverseBTree(struct BTNode * pT)

{

if(pT != NULL )

{

  if (NULL != pT->pLchild)

  {

   PostTraverseBTree(pT->pLchild);

  }

if (NULL != pT->pRchild)

  {

   PostTraverseBTree(pT->pRchild);

  }

  printf("%c\n",pT->data);

}

return;

}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

下载期权论坛手机APP