二叉树的应用—二叉树遍历的应用

在以上讨论的遍历算法中,访问结点的数据域信息,即操作Visite(bt->data)具有更一般的意义,需根据具体问题,对bt 数据进行不同的操作。下面介绍几个遍历操作的典型应用。

1.查找数据元素


Search(bt,x)在bt 为二叉树的根结点指针的二叉树中查找数据元素x。查找成功时返回该结点的指针;查找失败时返回空指针。

算法实现如下,注意遍历算法中的Visite(bt->data)等同于其中的一组操作步骤。
BiTree Search(BiTree bt,elemtype x)
{/*在bt 为根结点指针的二叉树中查找数据元素x*/
BiTree p;
if (bt->data==x) return bt; /*查找成功返回*/
if (bt->lchild!=NULL) return(Search(bt->lchild,x));
/*在bt->lchild 为根结点指针的二叉树中查找数据元素x*/
if (bt->rchild!=NULL) return(Search(bt->rchild,x));
/*在bt->rchild 为根结点指针的二叉树中查找数据元素x*/
return NULL; /*查找失败返回*/
}
算法6.21

2.统计出给定二叉树中叶子结点的数目


(1)顺序存储结构的实现
int CountLeaf1(SqBiTree bt,int k)
{/*一维数组bt[2k-1]为二叉树存储结构,k 为二叉树深度,函数值为叶子数。*/
total=0;
for(i=1;i<=2k-1;i++)
{ if (bt[i]!=0)
{ if ((bt[2i]==0 && bt[2i+1]==0) || (i>(2k-1)/2))
total++;
}
}
return(total);

}

转自http://see.xidian.edu.cn/cpp/html/983.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值