问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

二叉树的构建

发布网友 发布时间:2022-04-29 18:26

我来回答

1个回答

热心网友 时间:2022-06-19 01:09

关于这道题,从叶子层到根构造一颗二叉树,父节点为左右孩子的平均数,我们可以采取类似线段树的做法。

线段树是一种极其简单的数据结构,无需赘述,直接给出代码。

#include<stdio.h>
#include<string.h>

#define MAXN 1000

bool f[MAXN+1];
int n;
double a[MAXN+1],tree[MAXN<<2];//线段树的空间要开4倍

void Build(int k,int l,int r){
if(l==r)
tree[k]=a[l],f[k]=true;//如果区间长度为1,则没有左右子树,直接赋值
else{
f[k]=true;
Build(k<<1,l,l+r>>1);
Build(k<<1|1,(l+r>>1)+1,r);//递归构造左右子树
tree[k]=(tree[k<<1]+tree[k<<1|1])/2;//算平均值
}
return;
}

int main(void){
memset(tree,0XFF,sizeof(tree));//初始化
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%lf",&a[i]);
Build(1,1,n);//构造
for(int i=1;f[i];i++)
printf("%d %.2f *l=%d left=%.2f *r=%d right=%.2f\n",i,tree[i],i<<1,tree[i<<1],i<<1|1,tree[i<<1|1]);
return 0;
}

例:

输入为:

4
1 2 3 4

输出为:

1 2.50 *l=2 left=1.50 *r=3 right=3.50
2 1.50 *l=4 left=1.00 *r=5 right=2.00
3 3.50 *l=6 left=3.00 *r=7 right=4.00
4 1.00 *l=8 left=-1.#R *r=9 right=-1.#R
5 2.00 *l=10 left=-1.#R *r=11 right=-1.#R
6 3.00 *l=12 left=-1.#R *r=13 right=-1.#R
7 4.00 *l=14 left=-1.#R *r=15 right=-1.#R

对于每一行输出:

第一个数是当前节点的编号,第二个数表示此节点的值;

第三个数是左子树的编号,第四个数是左子树的值;

第五个数是右子树的编号,第六个数是右子树的值。子树不存在则值为-1.#R。

对于这组输出数据,它的含义如下图。

图中每个节点前一个数字代表它的编号,后一个数字为它的值。

如果n为2的正整数次幂,则生成的二叉树是一颗满二叉树,否则是一颗完全二叉树。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
修复征信是不是真的? 市面上征信修复公司可靠吗? 征信修复公司是真是假,真的可以修复吗? Emulex FC HBA卡 皮肤毛囊炎怎样治 银行自动扣款什么原因 银行什么情况自动扣款 贷款自动扣款什么意思 粤省事办理准生证需要多久 粤省事办理准生证步骤 为什么于嘉说山猫队和网队的比赛,少了易建联山猫进攻都没那么流畅了... c语言 二叉树的建立 关于如何建立二叉树?? 二叉树的建立 二叉树如何建立? 孩子的理解能力太差,怎么办? 如果发现孩子的学习理解能力很差,怎么办? 孩子的阅读分析能力很差怎么办 对于孩子学习方面理解能力很差该怎么办? 2019年花费111000元购买国产 排放量1.5T新车购置税交多少钱? 国内哪些海洋公园或许海洋馆可以看虎鲸??? 青岛海底世界有一头鲸鱼整整占一个展馆的那个叫什么啊? 中国有虎鲸的水族馆吗? 学习高等数学需要具备哪些基础知识 什么是绿化成活养护,什么是 绿化保存养护 哪个水族馆有虎鲸? 淘宝购物为什么不付款就提交不了订单 给孩子2岁买重疾医疗险做补充,保额10万左右,有没有合适的产品和计划 青岛海底世界有虎鲸吗? 淘宝买东西,等待买家付款,我现在想退款,怎么办 园林绿化养护的过程资料大概需要哪些? 怎么样创建二叉树呢? 谁知道85影视的地址? 急:c语言数据结构:怎么建立一个二叉树 日本机场免税店买的高档XO酒保存10年了,现在价值多少 85街免费电影怎么打不开啦 如何建立个二叉树 跟男朋友半年了 每次xo都进不了 前天去开房了 也进不了 他的那个也不是很大。反正就是进不了 这是 影城高清电影 二叉树是怎么建立起来的呢? 85论坛街电影怎么看 谁可以告诉我偷星九月天的第11本和第12本的详细内容啊? 二叉树的创建,求救 电影网站正规的 85年电影有哪些 85岁可以去电影院么 欧美老电影一贵族小男孩黑白片 有什么新电影看吗? 85年的电影有哪些 85--95的电影,电视连续剧有哪些 85街论坛上的cr电影怎么下???