二叉树

二叉树的定义是一种递归定义。满二叉树与完全二叉树的定义与区别。
typedef struct btreenod
{
 elemtype data;
 struct btreenode *LC;
 struct btreenode *RC;
} bnode;
bnode *BT;

1、二叉树的先序遍历算法
void preorder(bnode *BT)
{
 if(BT==NULL)
  return;
 else
 {
  visit(BT);
  if(BT->LC!=NULL) preorder(BT->LC);
  if(BT->RC!=NULL) preorder(BT->RC);
 }
}
2、二叉树的中序遍历算法
void inorder(bnode *BT)
{
 if(BT==NULL)
  return;
 else
 {
  if(BT->LC!=NULL) inorder(BT->LC);
  visit(BT);
  if(BT->RC!=NULL) inorder(BT->RC);  
 }
}
3、二叉树的后序遍历算法
void postorder(bnode *BT)
{ if(BT==NULL)
  return;
 else
 {
  if(BT->LC!=NULL) postorder(BT->LC);
  if(BT->RC!=NULL) postorder(BT->RC);
  visit(BT);
 }
}

由二叉树可以获得三种遍历序列。
由两种遍历序列可以重构二叉树。

×××生成二叉树的算法×××
void Creat_Binary_Sort_tree(bnode ** proot)
{
 bnode *p,*q;
 elemtype kl
 int i,n;
 *proot=NULL;
 printf("intput n:");
 scanf("%d",&n);
 for(i=0;i<n;i++)
 {
  p=(bnode *)malloc(sizeof(bnode));
  p->LC=NULL;
  p->RC=NULL;
  printf("input k:");
  scanf("%d",&k);
  if(*proot=NULL)
   *proot=p;
  else
  {
   q=*proot;
   while(q!=NULL)
   {
    if(q->data>k)
     if(q->LC!=NULL)
      q=q->LC;
     else
     {
      q->LC=p;
      q=NULL;
     } 
    
    if(q->data<k)
     if(q->RC!=NULL)
      q=q->RC;
     else
     {
      q->RC=p;
      q=NULL;
     }
   }
  }
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值