日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pat 1123(AVL)

發(fā)布時間:2023/11/30 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pat 1123(AVL) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題意:給n個數(shù),按照順序插入AVL,輸出層次遍歷,如果這顆AVL是完全二叉樹,輸出YES 否則輸出NO

當(dāng)時考試的時候。忘記AVL什么時候旋轉(zhuǎn)了,數(shù)據(jù)結(jié)構(gòu)不會寫,感覺藥丸

判斷完全二叉樹,這個簡單,是編號也好,根節(jié)點為1,左右兒子2*l,2*l+1,判斷最大的編號是否是n即可

或者把每個節(jié)點插入隊列,遇到nullptr停止,判斷隊列中是否剩下的有非nullptr節(jié)點

至于AVL的旋轉(zhuǎn),旋轉(zhuǎn)沒什么難得,記住就好

#include<bits/stdc++.h> using namespace std;struct node{int val;node *ch[2];node(){val=0;ch[0]=ch[1]=nullptr;}node(int val){this->val=val;ch[0]=ch[1]=nullptr;} }*root;void rotate(node* &rt,int d){node *t=rt->ch[d^1];rt->ch[d^1]=t->ch[d];t->ch[d]=rt;rt=t; }int gethight(node* root){if(root==nullptr)return 0;return max(gethight(root->ch[0]),gethight(root->ch[1]))+1; }void insert(node *&rt,int val){if(rt==nullptr){rt=new node(val);return ;}bool flag;int l,r;if(rt->val>val){flag=0;insert(rt->ch[0],val);l=gethight(rt->ch[0]);r=gethight(rt->ch[1]);if(l-r>1){if(val<rt->ch[0]->val)rotate(rt,1);else{rotate(rt->ch[0],0);rotate(rt,1);}}}else{flag=1;insert(rt->ch[1],val);l=gethight(rt->ch[0]);r=gethight(rt->ch[1]);if(r-l>1){if(val>rt->ch[1]->val)rotate(rt,0);else{rotate(rt->ch[1],1);rotate(rt,0);}}} }void print(){queue<node*> q;vector<int> ans;q.push(root);while(!q.empty()){node *t=q.front();q.pop();ans.push_back(t->val);if(t->ch[0])q.push(t->ch[0]);if(t->ch[1])q.push(t->ch[1]);}cout<<ans[0];for(int i=1;i<ans.size();i++)cout<<" "<<ans[i];cout<<endl;bool ok=1;q.push(root);while(q.front()!=nullptr){node* t=q.front();q.pop();q.push(t->ch[0]);q.push(t->ch[1]);}while(!q.empty()){node* t=q.front();q.pop();if(t!=nullptr)ok=0;}printf("%s\n",ok?"YES":"NO"); }int main(){root=nullptr;int n,v;cin>>n;for(int i=0;i<n;i++){cin>>v;insert(root,v);}print();return 0; }

?

轉(zhuǎn)載于:https://www.cnblogs.com/jihe/p/6489489.html

總結(jié)

以上是生活随笔為你收集整理的pat 1123(AVL)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。