游客已登陆 (0)未知
笔行证 257310
昵称 kuan 
笔贝 Score1
加为好友 发送短信
<< << 2009 一月 >> >>
123
45678910
11121314151617
18192021222324
25262728293031

访问计数:26966
本文:260 今天:1 本月 260

本地音乐播放器



 
       三叉树树
2007-04-12 晴



void CreatGTree(GTreeNode *& GT, char *a)//根据字符串a所给出的三叉树建立对就的存储结构
{
GTreeNode *s[10];
int k[10];
int top=-1;
GT=NULL;
GTreeNode *p;
istrstream ins(a);
char ch;
ins>>ch;
while(ch != '@')
{
switch(ch)
{
case'(';
top++;
s[top]=p;
k[top]=0;
break;
case')':
top--;
break;
case',':
k[top]++;
break;
default:
p=new GTreeNode;
p->data = ch;
for(int i=0; i<3; i++)
p->t = NULL;

if(GT == NULL)
GT=p;
else
s[top]->t[k[top]] = p;
}
ins>>ch;
}
}

void PreRoot(GTreeNode *GT)//先根遍算法
{
if(GT != NULL)
{
cout<<GT->data<<' ';
for(int i=0; i<3; i++)
PreRoot(GT->t);
}
}

void LayerOrder(GTreeNode *GT)//按层遍历由GT指针所指向的三叉树
{
Queue q;
InitQueue(q);
GTreeNode *p;
if(GT != NULL)
QInsert(q, GT);
while(!QueueEmpty(q))
{
p=QDelete(q);
cout<<p->data<<' ';
for(int i=0; i<3; i++)
if(p->t != NULL)
QInsert(q, p->t);
}
}

void PrentGTree(BTreeNode *BT)//输出以二叉树形式存储的普通树
{
if(BT != NULL)
{
cout<<BT->data;
if(BT->left != NULL)
{
cout<<'(';
PrintGTree(BT->left);
}
if((BT->right != NULL)
{
cout<<',';
PrintGTree(BT->right);
}
else
cout<<')';
}
}.
# posted by kuan @ 2007-04-12 12:56:07 评论(0)
 








 
笔 名:
*
评 论:
最多1000字。当前字数:0
*
联系方式: