树的操作(三)

这篇博客详细介绍了树的属性操作,包括结点数目、高度和度数的计算,均采用递归方法实现。同时,讲解了树的层次遍历的原理和步骤,通过建立队列并逐层推进,能有效地按层次打印树的所有节点。
摘要由CSDN通过智能技术生成

树的属性操作

树的属性操作具体指的就是树中结点的数目,树的高度,树的度数等…
1.树中结点的数目
在这里插入图片描述
查找树中结点数目的操作是递归完成的,是递归就有递归出口,当结点为空或者结点的子链表长度为0时就为递归出口,上图就是递归公式的提炼,我们看到下图,要求出该树的结点数可以分为3个部分,count(B)表示求以B为根结点的树的结点数,count©表示求以C为根结点的树的结点数,count(D)表示求以D为根结点的树的结点数,看得count(A)的同时又用到count©这就是一个递归调用的过程
在这里插入图片描述
代码演示

int count(GTreeNode<T>* node)const
{
   
      int ret = 0;
      if(node!=NULL)
      {
   
         ret = 1;
         for(node->child.move(0);!node->child.end();node->child.next())
         {
   
            ret+=count(node->child.current());
         }
      }
      return ret;
}

结果:

13

2.树中的高度
在这里插入图片描述
求树中的高度也是递归调用的,树中的高度等于其子树的高度的最大值+1,递归公式如下所示
在这里插入图片描述

int height(GTreeNode<T>* node)const
{
   
    int ret = 0;
    if(node!=NULL)
    {
   

       for
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值