二叉树的操作

#include "stdio.h"
#include "stdlib.h"


//二叉链表结点定义
struct tree
{
   int data;
   struct tree *l;
   struct tree *r;
};


// 先序建立二叉树
struct tree *create(struct tree *BT,int k)
{
  struct tree *p;
  int x;
  p=(struct tree *)malloc(sizeof(struct tree));
  printf("输入结点整数值(0表示空) : ");
  scanf("%d",&x);
  if(x!=0)
  {
     if(!(p=(struct tree *)malloc(sizeof(struct tree))))
      exit(0);
  //生成主根或子树根
     p->data=x;
     p->l=NULL;
     p->r=NULL;
     if(k==0)
      BT=p;
     if(k==1)
       BT->l=p;
     if(k==2)
      BT->r=p;
     create(p,1);//建立左子树
     create(p,2);//建立右子树
  }
  return(BT);
}
// 先序遍历
int visit(struct tree *BT)
{
  if(BT!=NULL)
    {
      printf("%d ",BT->data);
      visit(BT->l);
      visit(BT->r);
    }
  return 0;
}


int  main()
{
  struct tree *p;
  p=(struct tree *)malloc(sizeof(struct tree));
  p=create(p,0);
  visit(p);
  printf("\n");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值