数据结构以孩子兄弟链存储的树的高度
2016-04-22 10:13
435 查看
运行结果:
代码:
#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的子树的最大高度max p=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"); } }
相关文章推荐
- C#数据结构之顺序表(SeqList)实例详解
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构之队列(Quene)实例详解
- C#数据结构揭秘一
- C#数据结构之单链表(LinkList)实例详解
- 数据结构之Treap详解
- 用C语言举例讲解数据结构中的算法复杂度结与顺序表
- C#数据结构之堆栈(Stack)实例详解
- C#数据结构之双向链表(DbLinkList)实例详解
- JavaScript数据结构和算法之图和图算法
- Java数据结构及算法实例:冒泡排序 Bubble Sort
- Java数据结构及算法实例:插入排序 Insertion Sort
- Java数据结构及算法实例:考拉兹猜想 Collatz Conjecture
- java数据结构之java实现栈
- java数据结构之实现双向链表的示例
- Java数据结构及算法实例:选择排序 Selection Sort
- Java数据结构及算法实例:朴素字符匹配 Brute Force
- Java数据结构及算法实例:汉诺塔问题 Hanoi
- Java数据结构及算法实例:快速计算二进制数中1的个数(Fast Bit Counting)