IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 1123 Is It a Complete AVL Tree (30 分) -> 正文阅读

[C++知识库]1123 Is It a Complete AVL Tree (30 分)

AVL树的建立过程;
做的时候发现 判定高度的那个 if 只能写 = =2 或者 = =-2,不能写》2 或《-2;
然后就一个正常的判断完全二叉树。建个数组,存个最大索引,0到这个索引之间有空位置就说明不是完全二叉树。

#include<bits/stdc++.h>
using namespace std;
int n,ma=-1;
vector<int> v(30);
struct node{
	int val;
	node *l,*r;
};
node* ll(node *root){
	node *t=root->l;
	root->l=t->r;
	t->r=root;
	return t;
}
node* rr(node *root){
	node *t=root->r;
	root->r=t->l;
	t->l=root;
	return t;
}
node* lr(node *root){
		root->l=rr(root->l);
		return ll(root);
}
node* rl(node *root){
		root->r=ll(root->r);
		return rr(root);
}
int geth(node *root){
	if(root==NULL)
	return 0;
	return max(geth(root->l),geth(root->r))+1;
}
node* inser(node *root,int val){
	if(root==NULL){
		root=new node();
		root->val=val;
		root->l=root->r=NULL;
	}
	else if(val<root->val){
		root->l=inser(root->l,val);	
		if(geth(root->l)-geth(root->r)==2)
			val<root->l->val?root=ll(root):root=lr(root);
	}
	else{
		root->r=inser(root->r,val);
		if(geth(root->l)-geth(root->r)==-2)
		val<root->r->val?root=rl(root):root=rr(root);
	}
	return root;
}

void lev(node *root,int index){
	if(root==NULL)
	return ;
	ma=max(ma,index);
	v[index]=root->val;
	lev(root->l,2*index+1);
	lev(root->r,2*index+2);
}
int main(){
	cin>>n;
	node *root=NULL;
	for(int i=0;i<n;i++){
		int x;
		cin>>x;
		root=inser(root,x);
	}
	lev(root,0);
	int f=1;
	for(int i=0;i<=ma;i++){
		if(v[i]!=0){
			if(i!=0)
			printf(" ");
			printf("%d",v[i]);
		}
		else
		f=0;
	}
	f==1?printf("\nYES\n"):printf("\nNO\n");;
	return 0;
}
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-02-24 15:05:50  更:2022-02-24 15:08:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:26:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码