当前所在位置:珠峰网资料 >> 计算机 >> 软件水平 >> 正文
数据结构算法:平衡二叉树实现代码(1)
发布时间:2010/11/10 15:27:50 来源:www.xue.net 编辑:城市总裁吧
   找了很久才找到的平衡二叉树实现代码
  #include <stdio.h>
  typedef struct bitreetype
  {
  int item;
  int bdegree;/*平衡因子,左子树深度-右子树深度*/
  struct bitreetype *lchild;
  struct bitreetype *rchild;
  }bitree;
  typedef struct treequeuetype
  {
  int head;
  int tail;
  bitree *items[1000];
  }treequeue;/*定义一个队列,后面的平衡调整要用层序遍历,于是要用这个队列*/
  void resetqueue(treequeue *queue)
  {
  queue->head=-1;
  queue->tail=-1;
  return;
  }/*把队列清空*/
  void inqueue(treequeue *queue,bitree *element)
  {
  queue->tail++;
  queue->items[queue->tail]=element;
  }/*入队列*/
  bitree *outqueue(treequeue *queue)
  {
  queue->head++;
  return queue->items[queue->head];
  }/*出队列*/
  int isqueueempty(treequeue *queue)
  {
  if(queue->head==queue->tail)
  return 1;
  else
  return 0;
  }/*判断队列是否为空*/
  void fillmemory(char *source,int len,char content)
  {
  while(len)
  {
  source=source+len;
  *source=content;
  source=source-len;
  len--;
  }
  *source=0;
  }/*用CONTENT的内容去FILL以SOURCE为首,LEN长度的一块空间,初始化内存方便*/
  int getnums(int *dst)/*输入字符串并把字符串转化为一串数存入DST指向的内存中去,我们用它采集原始数据*/
  {
  char *temp,*num,*p,t;
  int len=0;
  temp=(char *)malloc(1000*sizeof(char));
  num=(char *)malloc(20*sizeof(char));
  p=num;
  fillmemory(temp,1000,0);
  fillmemory(num,20,0);
  scanf(\"%s\",temp);
  t=*temp;
  temp++;
  while(t)
  {
  if(t!=\’,\’)
  {
  *num=t;
  num++;
  t=*temp;
  temp++;
  }/*抽出一个数放入NUM临时空间中*/
  else
  {
  num=p;
  *dst=atoi(num);
  len++;
  fillmemory(num,20,0);
  dst++;
  t=*temp;
  temp++;
  }/*将NUM中的数字转化出来存入DST中*/
  }
  num=p;
  *dst=atoi(num);
  len++;
  fillmemory(num,20,0);
  dst++;
  t=*temp;
  temp++;
  return len;
  }/*处理最后一个数字*/
  /*****唉,写上面的函数时都两个月没写过C了,所以可能上面的函数条理相当差的说*****/
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved