pat甲级1064-Complete Binary Search Tree
来源:互联网 发布:淘宝把买家加入黑名单 编辑:程序博客网 时间:2024/06/07 23:50
这个是应用递归算法的一道经典题,由于要构造一棵二叉查找树,首先对所给的节点值按大小排序,根据完全查找二叉树的性质分别确定各个结点的位置即可。C++代码如下:
#include <bits/stdc++.h>using namespace std;struct T{ int data; T*left; T*right; T(int d,T*l=nullptr,T*r=nullptr):data(d),left(l),right(r) { } bool operator <(const T&t)const { return this->data<t.data; }};vector<T>v;T*root=nullptr;int mici(int n){ if(n==0) return 1; int k=1; for(int i=0;i<n;++i) { k*=2; } return k;}int cengshu(int n){ int i=0; while(mici(i)<n+1) { ++i; } return i;}T*createTree(int left,int right,int n){ if(left>right-1) return nullptr; if(left==right-1) return &v[left]; int p=0; int t=mici(n-2); int k=right-left-t*2+1; if(k<=t) { p=left+t+k-1; } else { p=left+t*2-1; } v[p].left=createTree(left,p,n-1); v[p].right=createTree(p+1,right,n-1); return &v[p];}void LevelOrder(){ if(root==nullptr) return ; queue<T*>q; cout<<root->data; if(root->left!=nullptr) q.push(root->left); if(root->right!=nullptr) q.push(root->right); while(!q.empty()) { T*t=q.front(); q.pop(); cout<<" "<<t->data; if(t->left!=nullptr) q.push(t->left); if(t->right!=nullptr) q.push(t->right); }}void PreOrder(T*t){ if(t!=nullptr) { cout<<t->data<<" "; if(t->left!=nullptr) PreOrder(t->left); if(t->right!=nullptr) PreOrder(t->right); }}int main(){ int n; cin>>n; if(n==0) return 0; for(int i=0;i<n;++i) { int a; cin>>a; v.push_back(T(a)); } sort(v.begin(),v.end()); int ceng=cengshu(n); root=createTree(0,v.size(),ceng); LevelOrder(); return 0;}
阅读全文
0 0
- pat甲级1064-Complete Binary Search Tree
- PAT甲级.1064. Complete Binary Search Tree (30)
- 【PAT甲级】1064. Complete Binary Search Tree (30)
- 1064. Complete Binary Search Tree (30) PAT甲级
- PAT甲级练习1064. Complete Binary Search Tree (30)
- PAT甲级1064. Complete Binary Search Tree (30)
- PAT甲级 1064. Complete Binary Search Tree (30)
- PAT 甲级 1064. Complete Binary Search Tree (30)
- PAT甲级 1064. Complete Binary Search Tree (30)
- PAT 1064 Complete Binary Search Tree
- PAT 1064 Complete Binary Search Tree
- 1110. Complete Binary Tree (25) PAT 甲级
- PAT 甲级 1110. Complete Binary Tree (25)
- 浙大PAT 1064题 1064. Complete Binary Search Tree
- Pat(Advanced Level)Practice--1064(Complete Binary Search Tree)
- PAT (Advanced Level) Practise 1064 Complete Binary Search Tree (30)
- PAT (Advanced Level) Practise 1064 Complete Binary Search Tree (30)
- PAT-1064 Complete Binary Search Tree(完全二叉树)
- Python--小甲鱼学习笔记--第26课:字典(dict())
- 446. Arithmetic Slices II
- 查看端口是否启用
- 数论基础:矩阵快速幂解斐波那契数列Yet another Number Sequence(UVA)
- HiveServer2 获取日志
- pat甲级1064-Complete Binary Search Tree
- UI 一一 UIWebView的应用小案例
- 第一章:STM32串口ISP下载
- Visual studio + IIS环境下跨域项目,移动端可触发断点调试的WEB服务器布署
- 第六章 ALDS1_5_A:Exhaustive Search 穷举搜索
- Springboot入门之分布式事务管理
- 474. Ones and Zeroes
- pip安装套件出错
- JDK8探险——CompletableFuture