| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1727 人关注过本帖
标题:[求助]平衡二叉排序树
只看楼主 加入收藏
nqq622
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-1-4
收藏
 问题点数:0 回复次数:4 
[求助]平衡二叉排序树

平衡二叉排序树的建立,删除,增加的C语言程序源码

搜索更多相关主题的帖子: C语言 源码 删除 
2006-01-05 12:03
nqq622
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-1-4
收藏
得分:0 
广大楼主请多多着力啊!
2006-01-05 18:21
啊南134
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-1-13
收藏
得分:0 
有没》
2008-01-13 21:27
孤魂居士
Rank: 2
来 自:老A(中国地大)
等 级:论坛游民
威 望:4
帖 子:1142
专家分:18
注 册:2007-5-21
收藏
得分:0 
[个人日记]
设置置顶  转载到我空间  复制本文网址 隐藏签名档 大字体选用该信纸 上一篇|下一篇|编辑|删除|返回
C++
发表时间:2007年11月28日 22时47分53秒        本文链接:[url]http://user.qzone.[/url]评论/阅读(0/4)

C++
//功能:中序遍历非递归算法
//时间:2006.11.3
//作者:lwh
//二叉树四种遍历方法:前序、中序、后序、层次
#include<fstream>
using namespace std;
typedef char TElemType;
ifstream in("input.txt");
ofstream out("output.txt");
//二叉树的二叉链表存储表示
typedef struct BiTNode
{
   TElemType data;
   BiTNode *lchild,*rchild; // 左右孩子指针
}BiTNode,*BiTree;
//功能:由先序次序序列创建二叉树
//参数:引用指针
//说明:可应付空树 参见bitree.cpp中的同名函数
//结论:建立链式二叉树最好的方法
void CreateBiTree(BiTree &t)//按先序次序输入二叉树中结点的值,"#"表示空子树,"@"表示输入结束标志!
{     //t为指针引用传递
  char ch;
  ch=in.get(); //读取先序次序二叉树中的结点值
  if(ch=='@')return;//结尾
  if(ch=='#') t=NULL;//空子树
  else{
   t=new BiTNode;
   t->data=ch;t->lchild=NULL;t->rchild=NULL;
   CreateBiTree(t->lchild);
   CreateBiTree(t->rchild);
  }
}//CreateBiTree
void PreOrderTraverse(BiTree t)
{
   if(t) {
   out<<t->data;
   PreOrderTraverse(t->lchild);
   PreOrderTraverse(t->rchild);
  }
}
void InOrderTraverse(BiTree t)
{
   if(t) {
   InOrderTraverse(t->lchild);
   out<<t->data;
   InOrderTraverse(t->rchild);
  }
}
void PostOrderTraverse(BiTree t)
{
   if(t) {
   PostOrderTraverse(t->lchild);
   PostOrderTraverse(t->rchild);
   out<<t->data;
  }
}

void LevelTraverse(BiTree t)
{
  BiTNode Qu[100];
  int front=-1,rear=-1;
  if(t) Qu[++rear]=*t;
  while(front!=rear)
  {
   out<<Qu[++front].data;
   if(Qu[front].lchild)
    Qu[++rear]=*Qu[front].lchild;
   if(Qu[front].rchild)
    Qu[++rear]=*Qu[front].rchild;
  }
}
void InorderStackTraverse(BiTree t)//中序非递归算法
{
  BiTree p,stack[100];//假设的最大栈空间数
  int top=-1;
  p=t;
  while((p!=NULL)||top!=-1)
  {
   while(p!=NULL)
   { top++;stack[top]=p;p=p->lchild;}
   if(top!=-1)
   { p=stack[top];top--;out<<p->data<<' ';p=p->rchild;}
  }
}
void main()
{
  BiTree tt=NULL;
  CreateBiTree(tt);
  PreOrderTraverse(tt);
  out<<endl;
  InOrderTraverse(tt);
  out<<endl;
  PostOrderTraverse(tt);
  out<<endl;
  LevelTraverse(tt);
  out<<endl;
  InorderStackTraverse(tt);
  out<<endl;
  in.close();
  out.close();
}

准备用3年做个高级软件工程师 10年也做不成。准备用10年做成高级软件工程师 3年就成了QQ 群 45771086
欢迎版主...欢迎JAVA爱好者...
一起从深夜 到凌晨...
2008-01-15 22:21
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1029
专家分:177
注 册:2007-5-10
收藏
得分:0 
如何平衡?AVL?RBT?SBT?Treap?
2008-01-17 18:56
快速回复:[求助]平衡二叉排序树
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016709 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved