博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PTA是否完全二叉搜索树c++版——山东科技大学
阅读量:4030 次
发布时间:2019-05-24

本文共 2254 字,大约阅读时间需要 7 分钟。

题目:

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

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

输出格式:

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

输入样例1:

938 45 42 24 58 30 67 12 51

输出样例1:

38 45 24 58 42 30 12 67 51YES

输入样例2:

838 24 12 45 58 67 42 51

输出样例2:

38 45 24 58 42 12 67 51NO
#include
using namespace std;typedef struct NODE{
int data; struct NODE *left; struct NODE *right;} NODE,*TREE;bool first=true;TREE build(TREE tree,int x){
if(!tree) {
tree=(NODE*)malloc(sizeof(NODE)); tree->data=x; tree->left=NULL; tree->right=NULL; } else if(tree->data
left=build(tree->left,x); else tree->right=build(tree->right,x); return tree;}int GetHeight( TREE BT ){
if(BT==NULL) return 0; int l=0,r=0; if(BT->left!=NULL) l=GetHeight(BT->left); if(BT->right!=NULL) r=GetHeight(BT->right); return l>r?l+1:r+1;}void dfs(TREE BT,int i,int c){
if(BT==NULL) return; if(c==i) {
if(first) cout<
data; else cout<<' '<
data; first=false; return; } dfs(BT->left,i,c+1); dfs(BT->right,i,c+1);}int LevelorderTraversal(TREE BT ){
int h=GetHeight(BT); for(int i=0; i
left==NULL&&tree->right==NULL)// {
// h=i;// flag=false;// }// }// return judge(tree->left,h,i+1,flag)&&judge(tree->right,h,i+1,flag);//}bool judge(TREE T){
if (T == NULL) return false; queue
Q; Q.push(T); while (!Q.empty()) { TREE p = Q.front(); Q.pop(); if (p->left && p->right) { Q.push(p->left); Q.push(p->right); } else if(p->right && p->left == NULL) return false; else { if(p->left && p->right == NULL) Q.push(p->left); while(!Q.empty()) { p = Q.front(); Q.pop(); if(p->left || p->right) return false; } } } return true;}int main(){ //freopen("in.txt","r",stdin); int n; cin>>n; int a[21]; TREE base_tree=NULL; for(int i=0; i
>a[i]; base_tree=build(base_tree,a[i]); } int h=LevelorderTraversal(base_tree); bool flag=true; cout<

更多PTA代码请到我的博客里参考

ps:代码仅供参考,请勿抄袭

转载地址:http://pmqbi.baihongyu.com/

你可能感兴趣的文章
iphone开发之SDK研究(待续)
查看>>
计算机网络复习要点
查看>>
Variable property attributes or Modifiers in iOS
查看>>
NSNotificationCenter 用法总结
查看>>
C primer plus 基础总结(一)
查看>>
剑指offer算法题分析与整理(一)
查看>>
剑指offer算法题分析与整理(三)
查看>>
部分笔试算法题整理
查看>>
Ubuntu 13.10使用fcitx输入法
查看>>
pidgin-lwqq 安装
查看>>
mint/ubuntu安装搜狗输入法
查看>>
C++动态申请数组和参数传递问题
查看>>
opencv学习——在MFC中读取和显示图像
查看>>
retext出现Could not parse file contents, check if you have the necessary module installed解决方案
查看>>
pyQt不同窗体间的值传递(一)——对话框关闭时返回值给主窗口
查看>>
linux mint下使用外部SMTP(如网易yeah.net)发邮件
查看>>
北京联通华为光猫HG8346R破解改桥接
查看>>
python使用win32*模块模拟人工操作——城通网盘下载器(一)
查看>>
python append 与浅拷贝
查看>>
Matlab与CUDA C的混合编程配置出现的问题及解决方案
查看>>