栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言数据结构算法——为儿子兄弟树的叶子结点赋值

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言数据结构算法——为儿子兄弟树的叶子结点赋值

文章目录

应用场景数据结构为叶子结点赋值


应用场景

对于叶子结点具有特定值的树,我们在用孩子兄弟链树表示时,需要把对应的叶子结点的值赋值上去,例如以下一棵树:

在使用孩子兄弟链树表示时,需要我们为叶子结点赋值,例如以凹入表示法输出此树:


我们还能根据孩子兄弟树的特殊结构求解结点下所有叶子结点的值总和。


数据结构
#define MaxSize 50

char str[MaxSize] = "A(B(C(D,E),L(M,N)),G,H(I,J(K)))";

//孩子兄弟链式存储结构
typedef struct tnode{
    char name;
    int data; //叶子结点包含数据
    struct tnode *hp; //指向兄弟
    struct tnode *vp; //指向孩子结点
}TSBNode;

为叶子结点赋值

首先把各叶子结点的值按照从左往右放入一个数组:

int a[MaxSize] = {12, 10, 3, 11, 9, 13, 20};

赋值函数如下:

int index = 0;
//为该树的叶子结点赋值
void AssignLeafs(TSBNode *&bt, int a[MaxSize]){
    if (bt){
        if (!bt->vp){
            bt->data = a[index];
            index++;
            AssignLeafs(bt->hp, a);
        }
        else{
            AssignLeafs(bt->vp, a);
            AssignLeafs(bt->hp, a);
        }
    }
}

其中 index 要在函数外赋值作为全局变量,孩子兄弟树的创建可参考我的另一篇博客:C语言创建销毁儿子兄弟链树、以凹入表示法输出树、查看儿子兄弟链树高度


我们可以根据赋值后的孩子兄弟树,求各结点下的叶子值总和,这里我就不放出来啦,可参考我上传的资源:C语言数据结构算法——孩子兄弟链树(注释完整:创建、销毁、叶子结点赋值、求树高)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/702824.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号