数据结构用递归算法计算二叉树中叶子结点数目的思想c语言程序,以二叉链表为存储结构, 试编写计算二叉树中叶子结点数目的递归算法....

原题:以二叉链表为存储结构, 试编写计算二叉树中叶子结点数目的递归算法.(该算法由下面程序中的LeafCount()函数实现)

#include

#include

#define ElemType char

#define NodeNum 5

using namespace std;

//二叉树的双链表存储结构

typedef struct BiTNode

{

ElemType data;//数据域

struct BiTNode *lchild, *rchild;//左右孩子指针

}BiTNode, *BiTree;

void CreateTree(BiTree &root)

{//建立二叉树

int i=1, flag;

BiTree node, pre, p;

srand((unsigned)time(NULL));

while(i++ <= NodeNum)

{

node = new BiTNode;

node->lchild = NULL;

node->rchild = NULL;

if(NULL == root)

{

root = node;

}

else

{

p = pre = root;

/*现在从树根出发, 走到指定树叶结点, 然后在树叶结点上插入新结点, 输入 0 表示

向左走, 输入其它字符表示向右走*/

cout<

while(NULL != p)

{

cin>>flag;

pre = p;

if(0 == flag)

{//向左走

p = p->lchild;

}

else

{//向右走

p = p->rchild;

}

}

/*将新结点插入为当前叶结点的左孩子(输入 0 )或右孩子(输入其它字符):*/

cout<

cin>>flag;

if(0 == flag)

{

pre->lchild = node;

}

else

{

pre->rchild = node;

}

}

//输入当前结点数据域值

cout<

cin>>node->data;

cout<

}

}

long LeafCount(BiTree root)//计算二叉树中叶子结点数目的递归算法

{

if(NULL == root)

{

return 0;//树为空时返回 0

}

else if(NULL == root->lchild && NULL == root->rchild)

{

return 1;//只有一个结点的树返回 1

}

else

{//返回左右子树的叶子结点之和

return LeafCount(root->lchild) + LeafCount(root->rchild);

}

}

void main()

{

BiTree root = NULL;

CreateTree(root);

cout<

long count = LeafCount(root);

cout<

cout<

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值