以孩子兄弟链作为树的存储结构，编写一个求树的高度的递归算法

94人阅读 评论(0)

1..h文件

(1) main.h

#ifndef MAIN_H_
#define MAIN_H_
#include "Tree_structure.h"

void CreateTree(TSBNode *&t);
int TreeHeight(TSBNode *t);
void TreeDisp(TSBNode *t);

#endif

(2)Tree_structure.h

#ifndef TREE_STRUCTURE_H_
#define TREE_STRUCTURE_H_

typedef char ElemType;
typedef struct tnode
{
ElemType data;
struct tnode *hp;//指向兄弟节点
struct tnode *vp;//指向孩子节点
}TSBNode;

#endif

2.cpp文件

(1)CreateTree.cpp

#include "Tree_structure.h"
#include  <malloc.h>
#include <stdio.h>

void CreateTree(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';a->hp=NULL;a->vp=b;
b->data='b';b->hp=c;b->vp=d;
c->data='c';c->hp=NULL;c->vp=NULL;
d->data='d';d->hp=e;d->vp=NULL;
e->data='e';e->hp=f;e->vp=g;
f->data='f';f->hp=NULL;f->vp=NULL;
g->data='g';g->hp=NULL;g->vp=NULL;
t=a;
}

(2)TreeDisp.cpp

#include "Tree_structure.h"
#include <iostream>
using namespace std;
void TreeDisp(TSBNode *t)
{
if(t!=NULL)
{
cout <<"node value:"<< t->data <<endl;
cout << t->data<<"'s first child -->";
TreeDisp(t->vp);
cout<<t->data <<"'s brother(its father\'s another child)-->";
TreeDisp(t->hp);
}
else
cout <<"NULL" <<endl;
}

(3)TreeHeight.cpp

#include "Tree_structure.h"
#include "stdio.h"
int TreeHeight(TSBNode *t)
{
TSBNode *p;
int m,max=0;
if(t==NULL)
return(0);
else if(t->vp==NULL)
return(1);
else
{
p=t->vp;
while(p!=NULL)
{
m=TreeHeight(p);
if(max<m)
{
max=m;
}
p=p->hp;
}
return(max+1);
}
}

3.main函数

#include <iostream>
#include "Tree_structure.h"
#include "main.h"
using namespace std;

int main()

int height;
TSBNode *tree;
CreateTree(tree);
TreeDisp(tree);
height=TreeHeight(tree);
cout <<"The tree's height is "<<height <<endl;
return 0;
}

0
0

【套餐】嵌入式Linux C编程基础
【套餐】2017软考系统集成项目——任铄
【套餐】Android 5.x顶级视频课程——李宁
【套餐】深度学习入门视频课程——唐宇迪
【直播】广义线性模型及其应用——李科
【直播】从0到1 区块链的概念到实践
【直播】计算机视觉原理及实战——屈教授
【直播】机器学习之凸优化——马博士
【直播】机器学习&数据挖掘7周实训--韦玮

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：400次
• 积分：50
• 等级：
• 排名：千里之外
• 原创：5篇
• 转载：0篇
• 译文：0篇
• 评论：0条
文章分类
文章存档
评论排行