完全二叉排序树

这篇博客介绍如何根据1到N的排列构建二叉排序树并进行层次遍历,然后判断所构建的树是否为完全二叉树。通过输入的N个数字,按照特定规则构建树并输出层次遍历的结果,再根据遍历结果确定是否符合完全二叉树的条件。
摘要由CSDN通过智能技术生成

#572. 完全二叉排序树

描述
提交
自定义测试

【题目描述】:

二叉排序树或者是一棵空树,或者是具有下列性质的二叉树:

(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;

(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;

(3)左、右子树也分别为二叉排序树;

(4)没有键值相等的结点。

完全二叉树:只有最下面的两层结点度能够小于2,并且最下面一层的结点都集中在该层最左边的若干位置的二叉树。

给出N个数,且这N个数构成1至N的排列。现在需要你按顺序构建一棵二叉排序树,并按照层次遍历的方式输出它,然后判断它是否是一棵完全二叉树。
【输入描述】:

输入包含两行。第一行为一个正整数N;第二行为1至N的排列。
【输出描述】:

输出包含两行。第一行为构建出的二叉排序树的层次遍历;第二行判断是否是完全二叉树:若是输出yes,否则输出no。
【样例输入1】:

10
7 9 8 4 6 2 10 1 5 3

【样例输出1】:

7 4 9 2 6 8 10 1 3 5
yes

【样例输入2】:

5
3 4 5 2 1

【样例输出2】:

3 2 4 1 5
no

【样例说明】:

样例1:/

样例2:/

看不见图片请下载
【时间限制、数据范围及描述】:

时间:1s 空间:128M

对于100%的数据,1≤N≤20

#include <iostream>
#include <cstdio>
#include <cmath>
#define ll long long
using namespace std;

int n,a[10000],t[10000]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值