数据结构例程——以孩子兄弟链存储的树的高度

编程入门 行业动态 更新时间:2024-10-06 22:29:53

<a href=https://www.elefans.com/category/jswz/34/1769880.html style=数据结构例程——以孩子兄弟链存储的树的高度"/>

数据结构例程——以孩子兄弟链存储的树的高度

本文是数据结构基础系列(6):树和二叉树中第5课时树的存储结构的例程。

例: 以孩子-兄弟链作为存储结构,求树的高度

源程序:【说明——函数TreeCreate仅创建了如上图所示的图,不具有通用性。】

#include <stdio.h>
#include <malloc.h>typedef char ElemType;
typedef struct tnode
{ElemType data;  //节点的值struct tnode *hp;   //指向兄弟struct tnode *vp;   //指向孩子节点
} TSBNode;
int TreeHeight(TSBNode *t);
void TreeCreate(TSBNode *&t);
void TreeDisp(TSBNode *t);int TreeHeight(TSBNode *t)
{TSBNode *p;int m, max = 0;if(t==NULL)return(0);else if(t->vp==NULL)return(1);else{//求t的子树的最大高度maxp=t->vp;while(p!=NULL){m=TreeHeight(p);if(max<m)max=m;p=p->hp;}return(max+1);}
}int main()
{TSBNode *tree;TreeCreate(tree);printf("Height: %d\n", TreeHeight(tree));TreeDisp(tree);return 0;
}void TreeCreate(TSBNode *&t)
{//本例仅建造说明中特定的树,以支持演示TSBNode *a, *b, *c, *d, *e, *f, *g;a = (TSBNode *)malloc(sizeof(TSBNode));b = (TSBNode *)malloc(sizeof(TSBNode));c = (TSBNode *)malloc(sizeof(TSBNode));d = (TSBNode *)malloc(sizeof(TSBNode));e = (TSBNode *)malloc(sizeof(TSBNode));f = (TSBNode *)malloc(sizeof(TSBNode));g = (TSBNode *)malloc(sizeof(TSBNode));a->data = 'a';b->data = 'b';c->data = 'c';d->data = 'd';e->data = 'e';f->data = 'f';g->data = 'g';a->vp = b;a->hp = NULL;b->vp = d;b->hp = c;c->vp = NULL;c->hp = NULL;d->vp = NULL;d->hp = e;e->vp = g;e->hp = f;f->vp = NULL;f->hp = NULL;g->vp = NULL;g->hp = NULL;t=a;  //a作为根return;
}void TreeDisp(TSBNode *t)
{if(t!=NULL){printf("node value: %c\n", t->data);printf("%c\'s first child --> ", t->data);TreeDisp(t->hp);printf("%c\'s brother(its father\'s another child) --> ", t->data);TreeDisp(t->vp);}else{printf("NULL\n");}
}

更多推荐

数据结构例程——以孩子兄弟链存储的树的高度

本文发布于:2024-03-23 17:29:26,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1740882.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数据结构   例程   高度   兄弟   孩子

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!