电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

树转换成二叉树,树的前序、后序的递归、非递归和层次序的非递归

树转换成二叉树,树的前序、后序的递归、非递归和层次序的非递归_第1页
1/7
树转换成二叉树,树的前序、后序的递归、非递归和层次序的非递归_第2页
2/7
树转换成二叉树,树的前序、后序的递归、非递归和层次序的非递归_第3页
3/7
#include #include #include #define MAX_TREE_SIZE 100 typedef struct { int data; int parent; //双亲位置域 }PTNode; /*双亲表示法树结构*/ typedef struct { PTNode node[MAX_TREE_SIZE]; int count; //根的位置和节点个数 }PTree; /*树的孩子兄弟表示结点结构定义*/ typedef struct node{ int data; struct node *firstchild; struct node *rightsib; }BTNode,*BTree; void init_ptree(PTree *tree) { tree->count=-1; } //初始化树结点(孩子兄弟表示法) BTNode GetTreeNode(int x) { BTNode t; t.data=x; t.firstchild=t.rightsib=NULL; return t; } //树的前序遍历(递归) void preorder(BTNode *T) { if(T!=NULL) { printf("%d ",T->data); preorder(T->firstchild); preorder(T->rightsib); } } //树的前序遍历(非递归) void preorder2(PTree T) { int i; for(i=0;ifirstchild); printf("%d ",T->data); inoeder(T->rightsib); } } //树后序遍历(非递归) void inoeder2(PTree T) { int i; for(i=T.count-1;i>=0;i--) { printf("%d ",T.node[i]); } } //层次遍历 void level(PTree T) { int i; for(i=0;irightsib,level+1); for(i=1;i<=8*level;i++) printf(" "); printf("-------%d\n",root->data); PrintBTree(root->firstchild,level+1); } } //输出树 void print_ptree(PTree tree) { int i; printf(" 序号 结点 双亲\n"); for(i=0;i<=tree.count;i++) { printf("%8d%8d%8d",i,tree.node[i].data,tree.node[i].parent); printf("\n"); } } /*用双亲表示法创建树*/ PTree CreatTree(PTree T) { int i=1; int fa,ch; PTNode p; for(i=1;ch!=-1;i++) { printf("输入第%d 结点:\n",i); scanf("%d,%d",&fa,&ch); printf("\n"); p.data=ch; p.parent=fa; T.count++; T.node[T.count].data = p.data; T.node[T.count].parent = p.p...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

树转换成二叉树,树的前序、后序的递归、非递归和层次序的非递归

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部