VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 811|回复: 3

来帮帮忙呀

[复制链接]

3

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-2-17 13:30:01 | 显示全部楼层 |阅读模式
n 个结点的完全二叉数顺序存储在一维数组a中,设计一个算法实现对此二叉数的先序遍历
回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-4-26 13:00:01 | 显示全部楼层
都完全了,还不简单

假设存储在1,2,...n里面

从1开始
遍历i,递归遍历2i,递归遍历2i+1
回复

使用道具 举报

0

主题

10

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-5-24 09:00:01 | 显示全部楼层
#include<stdio.h>

//a[0] 没有用
void first(int a[],int n)
{
        int cur,last;
        cur=last=1;
// 找到最后一个元素的下标
        while(last<n)
                last=last*2+1;
        last=last/2;
        while(cur!=last)
        {
                printf("%d\t",a[cur]);
                if(2*cur<n)
                        cur*=2;
                else if(cur%2)
                        cur=cur/2+1;
                else
                        cur++;
        }
        printf("%d\t",a[last]);
}

void main()
{
        int a[]={0,1,2,3,4,5,6,7,8,9};
        int n=sizeof(a)/sizeof(a[0]);
        first(a,n);
}
回复

使用道具 举报

0

主题

10

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-5-24 09:15:01 | 显示全部楼层
#include<stdio.h>

//a[0] 没有用
void first(int a[],int n)
{
        int cur,last;
        cur=last=1;
// 找到最后一个元素的下标
        while(last<n)
                last=last*2+1;
        last=last/2;
        while(cur!=last)
        {
                printf("%d\t",a[cur]);
                if(2*cur<n)
                        cur*=2;
                else if(cur%2)
                        cur=cur/2+1;
                else
                        cur++;
        }
        printf("%d\t",a[last]);
}

void main()
{
        int a[]={0,1,2,3,4,5,6,7,8,9};
        int n=sizeof(a)/sizeof(a[0]);
        first(a,n);
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表