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

完全二叉树 数据结构

发布网友 发布时间:2022-04-26 23:59

我来回答

1个回答

热心网友 时间:2022-06-20 18:26

#include "math.h"
#include "string.h"
#include "stdlib.h"
/*
判断某个节点num是否属于二叉树a[]内的节点,其中len是二叉树数组表示的所有节点个数,
包括左右孩子为空的情况,*index是节点num在二叉树数组中的位置。
*/
int judge(int a[], int len,int *index, int num)
{
    for (int i=0; i<len; i++)
    {
        if (a[i] == num)
        {
*index = i;
return 1;
        }
    }
return 0;


/*
以数组形式创建二叉树,返回数组指针,其中参数NodeNum是二叉树内非空节点个数
*/
int * CreateBinTree(int *NodeNum)
{
    int *a=NULL;
    int x=0,y=0;
    scanf("%d %d",&x,&y);
a = (int *)malloc(sizeof(int)*(x*2+1));
*NodeNum = x;
memset(a,0,sizeof(int)*(x*2+1));
a[0] = y;
int n = x;
for (int i=1; i<n; i++)

{
        scanf("%d %d",&x,&y);
int index=0;
if ( judge(a,n,&index,x) )
{
a[ (index)*2+1 ] = y;
}
else if ( judge(a,n,&index,y) )
{
            a[ (index)*2+2 ] = x;
}
}
    return a;
}

/*
判断是否完全二叉树的依据是某个节点左右孩子不为空,或者全部为空
*/
int isBinTree(int a[], int NodeNum)
{
    for (int i=0; i<(2*NodeNum+1); i++ )
    {
        if (a[i] != 0)
        {
if ( (a[2*i+1]==0)&&(a[2*i+2]!=0) )
{
return 0;
}
if ((a[2*i+1]!=0)&&(a[2*i+2]==0))
{
return 0;
}
        }
    }
}
int main(int argc, char* argv[])
{
        int *a=NULL;
int NodeNum=0;
a = CreateBinTree(&NodeNum);
printf("\nShow:");
for (int i=0; i<2*NodeNum+1; i++)
{
   printf("%d ",a[i]);
}
int rt = isBinTree(a,NodeNum);
if (rt)
{
           printf("\nyes!");
}
else
{
           printf("\nno!");
}

printf("\n");
return 0;
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如何分别真金和仿金首饰 怎样区分真金和仿金首饰呢 小学生新年晚会主持人的串词!!(不要太多)急 大大后天就需要了!!!_百度... 周年晚会策划公司 奥格瑞玛传送门大厅在哪 奥格瑞玛传送门大厅怎么走 锻炼颈椎的几个动作 水多久能结冰 冰能在多长时间内形成 请问水低于0度会结冰吗? 如何防止脱发严重 嘴唇上有黑印用蜜蜡和棉线去除了胡须 葡萄酒是怎么酿造出来的 怎么用链表创建一个完全二叉树, 利用完全二叉树的性质建立一棵二叉树 数据结构,完全二叉树问题(用C语言) 葡萄酒怎样酿成的,需要步骤 C#如何利用数组创建完全二叉树 请问怎么创建完全二叉树(用字母表示节点)(用顺序方式存储),急求!!! 葡萄酒是怎么酿成的? 被封了怎么办? 为什么被封了 被封15天,是有哪些原因? 被封号是什么原因? 为什么总是无故被封? 添加的是朋友推荐微信名片,但对方没通过,怎样可以再次找到? 微信之前未开启通过名片添加好友,后来开启后是否能看到之前通过名片添加你的人 微信没有开启名片方式添加好友,开启后可以看到以前通过这种方式添加我... 微信上对方加我好友显示通过分享名片添加,但是微信好友里面没有这个人... 微信好友删除怎么找回没有电话是分享名片添加的 在征信上是否可以看到欠款额度 顺丰快递从长乐一天能到什邡吗? 完全二叉树判断问题--数据结构 已知一棵(完全二叉树)的前序遍历序列,编程求出这棵(完全二叉树) 数据结构-二叉树的创建? 二叉树的创建 介绍下二叉树 请问C语言如何创建二叉树??? 是否可用程序自动生成一颗高为n的完全二叉树数据? C语言判断完全二叉树 微信怎么跟我的小米盒子互动推送节目和照片啊! 数据结构,我想创建一颗任意的二叉树,不一定是完全二叉树,不知道应该如何操作 编写算法,判断一颗二叉树是否是完全二叉树 怎么把微信投屏到小米盒子呀。苹果手机 如何通过小米盒子2,将微信与对方视频进行实时投影 请问小米盒子的无线显示在哪里呢 ipad微信开视频能通过小米盒子透影到电视上吗 小米盒子怎么可以在微信上看电视? 小米盒子能装微信或者qq,然后接摄像头进行视频聊天吗? 微信视频影音不同步怎么办?保存视频后用手机自带播放器观看又是正常的 小米盒子怎么看微信关注里的电影 申报初级档案职称要具备哪些条件