数据结构用递归算法计算二叉树中叶子结点数目的思想c语言程序,编写递归算法计算二叉树中叶子结点的数目。.doc...

编写递归算法计算二叉树中叶子结点的数目。

学院名称专业班级实验成绩学生姓名学号实验日期课程名称数据结构实验题目2 树一、实验目的与要求

Cfree

三、实验内容和原理

[问题描述]

[输入]

”,输入时,按照前序序列的顺序输入该结点的内容。对例题中的树,其输入序列ABD..EH...CF.I..G..。

[输出]

[存储结构]

[算法的基本思想]

[参考源程序]#include

#include

struct node{

char info;

struct node *llink, *rlink;

};

typedef struct node NODE;

NODE *create(){ //构造二叉树

char x;

NODE *p;

scanf("%c", &x);

printf("%c", x); //打印出已输入的二叉树

if(x!='.'){

p=(NODE *)malloc(sizeof(NODE));

p->info=x;

p->llink=create();

p->rlink=create();

}

else p=NULL;

return p;

}

int run(NODE *t){

static int count=0;

if(t){

run(t->llink); //递归遍历左子树,直到叶子处

run(t->rlink); //递归遍历右子树,直到叶子处

if(t->llink ==NULL && t->rlink == NULL) {

count++;

}

}

return count;

}

main()

{ NODE *T;

int left_number;

printf("请输入一棵树:\n" );

T=create();

printf("\n");

if(!T) printf("This is a empty binary tree.");

else{

left_number=run(T);

printf("\n这棵树共有 %d 个子叶. \n", left_number);

}

printf("\n");}

四、实验结果与分析

(2)习题1:注意叶子结点是指该结点既没有左孩子又没有右孩子,采用递归算法就很容易计算出其数目。

实验结果如图:

五、实验心得及体会

本次实验加深了我对树的各种遍历方法。尤其是先序遍历。在建立树的过程中更是采取了递归的方法。有的算法用递归表示要比用循环表示简洁精练[如二叉树的遍历代码更简洁清晰,可读性更好有的算法递归能实现循环不一定能实现递归的内部实现要消耗额外的空间和时间

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值