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

c语言 二叉树的建立

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

我来回答

2个回答

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

根据二叉树的父节点和子节点的关系来创建
比如,父节点的编号是1,那么左子节点的编号就是2,右子节点的编号就是3
关系
父节点编号为i,则左子节点编号为2*i,右子节点编号为2*i+1
然后按照从小到大的顺序赋值就行了
比如操作 先i=1;node[1]=1,根节点赋值
再node[1*2]=node[2]=2;在node[1*2+1]=node[3]=3;
再i=2;node[2*2]=node[4]=4;node[2*2+1]=node[5]=-1;
再i=3;node[3*2]=node[6]=5...
。。依次下去,发现没,可以用一个数组来存,正好是按照层次遍历的顺序建立的,i不代表层次,具体有多少层用log2(n)+1来求,n就是你数组a里面的个数
整个创建过程就是这样,
假设a数组的个数为n,你的是7
node[1]=a[0];//根
int j=1;
for(i=1;;i++)
{
if(j<n)
node[i*2]=a[j++];
else break;//原数组里面已经没有数了

if(j<n)
node[i*2+1]=a[j++];
else break;
}

原代码:
#include <iostream>
#include<cmath>
void buildTree(int node[],int a[],int n)//建树
{
if(n==0)return;//原数组为空
node[1]=a[0];//根
int j=1;
for(int i=1;;i++)
{
if(j<n)
node[i*2]=a[j++];
else break;//原数组里面已经没有数了

if(j<n)
node[i*2+1]=a[j++];
else break;
}
}
void show(int node[],int n)//按层显示,同一层以空格隔开
{
int e=0,h=0;
for(int i=1;i<=n;i++)
{
printf("%d ",node[i]);
h++;
if((int)pow(2,e)==h)
}
}
void main()
{
int n,tree[1000],a[1000];
scanf("%d",&n);//原来数组的个数
for(int i=0;i<n;i++)scanf("%d",&a[i]);
buildTree(tree,a,n);
show(tree,n);
}

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

根据二叉树的父节点和子节点的关系来创建
比如,父节点的编号是1,那么左子节点的编号就是2,右子节点的编号就是3
关系
父节点编号为i,则左子节点编号为2*i,右子节点编号为2*i+1
然后按照从小到大的顺序赋值就行了
比如操作 先i=1;node[1]=1,根节点赋值
再node[1*2]=node[2]=2;在node[1*2+1]=node[3]=3;
再i=2;node[2*2]=node[4]=4;node[2*2+1]=node[5]=-1;
再i=3;node[3*2]=node[6]=5...
。。依次下去,发现没,可以用一个数组来存,正好是按照层次遍历的顺序建立的,i不代表层次,具体有多少层用log2(n)+1来求,n就是你数组a里面的个数
整个创建过程就是这样,
假设a数组的个数为n,你的是7
node[1]=a[0];//根
int j=1;
for(i=1;;i++)
{
if(j<n)
node[i*2]=a[j++];
else break;//原数组里面已经没有数了

if(j<n)
node[i*2+1]=a[j++];
else break;
}

原代码:
#include <iostream>
#include<cmath>
void buildTree(int node[],int a[],int n)//建树
{
if(n==0)return;//原数组为空
node[1]=a[0];//根
int j=1;
for(int i=1;;i++)
{
if(j<n)
node[i*2]=a[j++];
else break;//原数组里面已经没有数了

if(j<n)
node[i*2+1]=a[j++];
else break;
}
}
void show(int node[],int n)//按层显示,同一层以空格隔开
{
int e=0,h=0;
for(int i=1;i<=n;i++)
{
printf("%d ",node[i]);
h++;
if((int)pow(2,e)==h)
}
}
void main()
{
int n,tree[1000],a[1000];
scanf("%d",&n);//原来数组的个数
for(int i=0;i<n;i++)scanf("%d",&a[i]);
buildTree(tree,a,n);
show(tree,n);
}
你的串号我已经记下,采纳后我会帮你制作
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
The ___ of the food is very terrible, but it ___ very nice. Worm.Win32.Viking.k病毒描述 IM-Worm.Win32.VB.c清除方案 Worm.Win32.VB.nk 是什么样的蠕虫病毒啊,会怎么样你的电脑啊?_百度知 ... 蠕虫病毒Win32.Womble.C简介 email-worm.win32,vb,bk是什么病毒? Email-Worm.Win32.VB.bk,有谁知道这是什么病毒吗现在有些什么 病毒? Worm.Win32.Viking病毒描述 IM-Worm.Win32.VB.c病毒标签 贵州遵义到甘肃省天水市怎么走方便? 关于如何建立二叉树?? 二叉树的建立 二叉树如何建立? 孩子的理解能力太差,怎么办? 如果发现孩子的学习理解能力很差,怎么办? 孩子的阅读分析能力很差怎么办 对于孩子学习方面理解能力很差该怎么办? 2019年花费111000元购买国产 排放量1.5T新车购置税交多少钱? 国内哪些海洋公园或许海洋馆可以看虎鲸??? 青岛海底世界有一头鲸鱼整整占一个展馆的那个叫什么啊? 中国有虎鲸的水族馆吗? 学习高等数学需要具备哪些基础知识 什么是绿化成活养护,什么是 绿化保存养护 哪个水族馆有虎鲸? 淘宝购物为什么不付款就提交不了订单 给孩子2岁买重疾医疗险做补充,保额10万左右,有没有合适的产品和计划 青岛海底世界有虎鲸吗? 淘宝买东西,等待买家付款,我现在想退款,怎么办 园林绿化养护的过程资料大概需要哪些? 我在淘宝全球购买的东西一开始付款但是一直显示待付款结果最后点了取消订单,可是钱没显示退回,是什么 二叉树的构建 怎么样创建二叉树呢? 谁知道85影视的地址? 急:c语言数据结构:怎么建立一个二叉树 日本机场免税店买的高档XO酒保存10年了,现在价值多少 85街免费电影怎么打不开啦 如何建立个二叉树 跟男朋友半年了 每次xo都进不了 前天去开房了 也进不了 他的那个也不是很大。反正就是进不了 这是 影城高清电影 二叉树是怎么建立起来的呢? 85论坛街电影怎么看 谁可以告诉我偷星九月天的第11本和第12本的详细内容啊? 二叉树的创建,求救 电影网站正规的 85年电影有哪些 85岁可以去电影院么 欧美老电影一贵族小男孩黑白片 有什么新电影看吗? 85年的电影有哪些 85--95的电影,电视连续剧有哪些