L3-010 是否完全二叉搜索树 (30 分)(数组模拟)

简介: L3-010 是否完全二叉搜索树 (30 分)(数组模拟)

将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果。


输入格式:

输入第一行给出一个不超过20的正整数N;第二行给出N个互不相同的正整数,其间以空格分隔。


输出格式:

将输入的N个正整数顺序插入一个初始为空的二叉搜索树。在第一行中输出结果树的层序遍历结果,数字间以1个空格分隔,行的首尾不得有多余空格。第二行输出YES,如果该树是完全二叉树;否则输出NO。


输入样例1:

1. 9
2. 38 45 42 24 58 30 67 12 51


输出样例1:

1. 38 45 24 58 42 30 12 67 51
2. YES


输入样例2:

1. 8
2. 38 24 12 45 58 67 42 51


输出样例2:

1. 38 45 24 58 42 12 67 51
2. NO


思路:用数组递归模拟

#include<bits/stdc++.h>
using namespace std;
int a[110],maxx;
void add(int idx,int x)
{
    if(!a[idx])
    {
        a[idx]=x;
        maxx=max(maxx,idx);//记录最大下标
        return ;
    }
    if(x>a[idx]) add(2*idx,x);
    else add(2*idx+1,x);
}
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        int x;
        cin>>x;
        add(1,x);
    }
    int f=0;
    for(int i=1;i<=maxx;i++)
    {
        if(a[i])
        {
            if(f++) cout<<' ';
            cout<<a[i];
        }
    }
    cout<<endl;
    if(maxx==n) cout<<"YES\n";
    else cout<<"NO\n";
    return 0;
}
目录
相关文章
|
9月前
|
Java
如何实现一个高效的二叉搜索树(BST)?请给出时间复杂度分析。 要求:设计一个二叉搜索树,支持插入、删除和查找操作。要求在平均情况下,这些操作的时间复杂度为O(log n)。同时,考虑树的平衡性,使得树的高度保持在对数级别。
如何实现一个高效的二叉搜索树(BST)?请给出时间复杂度分析。 要求:设计一个二叉搜索树,支持插入、删除和查找操作。要求在平均情况下,这些操作的时间复杂度为O(log n)。同时,考虑树的平衡性,使得树的高度保持在对数级别。
78 0
|
6月前
|
C++
给出一个数据序列,建立二叉排序树,并实现插入功能 对二叉排序树进行中序遍历,可以得到有序的数据序列
该文章通过C++代码示例讲解了如何根据输入数据序列构建二叉排序树,并实现插入功能,随后通过中序遍历输出有序的数据序列,展示了对二叉排序树进行操作和遍历的完整过程。
|
9月前
|
搜索推荐 算法 索引
【排序算法】深入解析快速排序(霍尔法&&三指针法&&挖坑法&&优化随机选key&&中位数法&&小区间法&&非递归版本)
【排序算法】深入解析快速排序(霍尔法&&三指针法&&挖坑法&&优化随机选key&&中位数法&&小区间法&&非递归版本)
224 4
|
9月前
|
搜索推荐 算法
在冒泡排序算法中,为什么每次比较相邻的元素时都要进行交换?
【2月更文挑战第8天】【2月更文挑战第21篇】在冒泡排序算法中,为什么每次比较相邻的元素时都要进行交换?
62 1
|
9月前
|
算法 测试技术 C#
【动态规划】【数论】【区间合并】3041. 修改数组后最大化数组中的连续元素数目
【动态规划】【数论】【区间合并】3041. 修改数组后最大化数组中的连续元素数目
|
9月前
|
Java
每日一题《剑指offer》数组篇之调整数组顺序使奇数位于偶数前面
每日一题《剑指offer》数组篇之调整数组顺序使奇数位于偶数前面
72 0
每日一题《剑指offer》数组篇之调整数组顺序使奇数位于偶数前面
|
算法
减治法实现插入排序,减治法实现二叉查找树(二叉搜索数,二叉排序数)的创建、插入与查找(含解析与代码实现)
减治法实现插入排序,减治法实现二叉查找树(二叉搜索数,二叉排序数)的创建、插入与查找(含解析与代码实现)
127 0
【CCCC】L3-016 二叉搜索树的结构 (30分),,手动建堆(二叉搜索树节点询问),map写法
【CCCC】L3-016 二叉搜索树的结构 (30分),,手动建堆(二叉搜索树节点询问),map写法
123 0
由遍历序列构造二叉树--王道
前序遍历 + 中序遍历序列 后序+中序遍历序列 层序遍历+中序遍历序列
307 0
由遍历序列构造二叉树--王道
L2-004 这是二叉搜索树吗? (25 分)(数组模拟)
L2-004 这是二叉搜索树吗? (25 分)(数组模拟)
129 0