博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
求二叉树叶子结点的个数
阅读量:5745 次
发布时间:2019-06-18

本文共 618 字,大约阅读时间需要 2 分钟。

问题:给出如下结点的定义,求二叉树叶子结点的个数

typedef struct node{    char data;    struct node *lchild;    struct node *rchild;}BiNode, *BiTree;复制代码

分析

首先我们要明确的是,怎样一个结点才能作为叶子结点。当一个结点不存在左子树和右子树时,称为叶子结点。而在这里,我们要计算的是一颗二叉树叶子结点的总和。对于计数,我们一般定义一个int型的count变量,当符合条件时便加一。而遍历二叉树在这里的确显得过于繁琐,因为输出条件和计算规则都是一样的,显然递归更适合,如下:

(1) 如果给定节点T为NULL,则是空树,叶子节点为0,返回0;

(2) 如果给定节点T左、右子树均为NULL,则是叶子节点,且叶子节点数为1,返回1;

(3) 如果给定节点T左、右子树不都为NULL,则不是叶子节点,以T为根节点的子树叶子节点数 = T左子树叶子节点数 + T右子树叶子节点数;

实现

int leaf(BiTree t){	if(!t)       	    return 0;      //空树,无叶子 	else if(!t->lchild && !t->rchild)	    return 1;   	else    	    return (leaf(t->lchild) + leaf(t->rchild));} 复制代码

转载地址:http://bnazx.baihongyu.com/

你可能感兴趣的文章
英国征召前黑客组建“网络兵团”
查看>>
PHP 命令行模式实战之cli+mysql 模拟队列批量发送邮件(在Linux环境下PHP 异步执行脚本发送事件通知消息实际案例)...
查看>>
pyjamas build AJAX apps in Python (like Google did for Java)
查看>>
centos5.9使用RPM包搭建lamp平台
查看>>
Javascript String类的属性及方法
查看>>
[LeetCode] Merge Intervals
查看>>
Struts2 学习小结
查看>>
【记录】JS toUpperCase toLowerCase 大写字母/小写字母转换
查看>>
在 Linux 系统中安装Load Generator ,并在windows 调用
查看>>
Visifire charts ToolBar
查看>>
OC中KVC的注意点
查看>>
【洛天依】几首歌的翻唱(无伴奏)
查看>>
tmux不自动加载配置文件.tmux.conf
查看>>
[MOSEK] Stupid things when using mosek
查看>>
程序实例---栈的顺序实现和链式实现
查看>>
服务的使用
查看>>
Oracle 用户与模式
查看>>
MairDB 初始数据库与表 (二)
查看>>
拥在怀里
查看>>
chm文件打开,有目录无内容
查看>>