| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 519 人关注过本帖
标题:~初学者~~求助树的遍历!~~
只看楼主 加入收藏
fay
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-3-23
收藏
 问题点数:0 回复次数:1 
~初学者~~求助树的遍历!~~

我们要求利用父指针表示法建立一棵有向树,并分别实现其先、中、后根次序周游。我好混乱啊。。。写的这个只能做3个数字的。。。
可不可以请大家指导一下?刚开始学这个,实在找不到感觉。。。
非常谢谢!麻烦您们了!:-)

#include<stdio.h>
#include<malloc.h>
#define MAXNUM 100

struct ParTreeNode/*树中结点结构*/
{
int info;/*结点中的元素*/
int parent; /*结点的父结点位置*/
};

struct ParTree
{
struct ParTreeNode nodelist[MAXNUM];
int n;
};
typedef struct ParTree *PParTree;

//在父指针表示的树中求最左子结点的位置
int leftChild_partree(PParTree t, int p)
{
if(t->nodelist[p+1].parent==p)
return(p+1);
else
return(-1);
}
//在父指针表示的树中求兄弟结点的位置
int rightSibling_partree(PParTree t, int p)
{
int i;
if (p>=0 && p<t->n)
{
for (i=p+1; i<t->n; i++)
if (t->nodelist[i].parent==t->nodelist[p].parent)
return(i);
}
return(-1);
}

//先根,递归
void preOrder(PParTree t,int p)
{
int c;
printf("%d ",t->nodelist[p].info);
c=leftChild_partree(t,p);
while (c>=0 && c<t->n)
{
preOrder(t,c);
c=rightSibling_partree(t,c);
}
}
//中根,递归
void inOrder(PParTree t,int p)
{
int c;
c=leftChild_partree(t,p);
if (c<=0)
printf("%d ",t->nodelist[p].info);
else
{
inOrder(t,c);
printf("%d ",t->nodelist[p].info);
c=rightSibling_partree(t,c);
while (c>=0 && c<t->n)
{
inOrder(t,c);
c=rightSibling_partree(t,c);
}
}
}

//后根,递归
void postOrder(PParTree t,int p)
{
int c;
c=leftChild_partree(t,p);
while (c>=0 && c<t->n)
{
postOrder(t,c);
c=rightSibling_partree(t,c);
}
printf("%d ",t->nodelist[p].info);
}

void main()
{
PParTree t;
t=(PParTree)malloc(sizeof(struct ParTreeNode));

int i,total,num;
scanf("%d",&total);
t->n=total;
for(i=0;i<total;i++)
{
scanf("%d",&num);
t->nodelist[i].info=num;
}
printf("\nPre-Order:\n");
preOrder(t,0);
printf("\nIn-Order:\n");
inOrder(t,0);
printf("\nPost-Order:\n");
postOrder(t,0);
}

[此贴子已经被作者于2006-4-2 23:16:06编辑过]

搜索更多相关主题的帖子: 遍历 
2006-04-01 02:28
fay
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-3-23
收藏
得分:0 
我们还没学二叉树,题目就说“利用父指针表示法建立一棵有向树,并分别实现其先、中、后根次序周游。”
我不知道怎么做。。。求教!谢谢!!!
2006-04-01 11:10
快速回复:~初学者~~求助树的遍历!~~
数据加载中...
 
   



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

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