1123. Is It a Complete AVL Tree (30) PAT 甲级
来源:互联网 发布:腾讯 php面试经历 编辑:程序博客网 时间:2024/05/17 22:15
传送门
用bfs去层次遍历。
当bfs到NULL值时但是所有的节点并没有遍历完时,说明不是完全二叉树
#include<stdio.h>#include<algorithm>#include<queue>using namespace std;typedef struct Node{ int weight; int height; Node *lchild,*rchild;}AVLnode,*AVLtree;AVLtree root;int n;AVLnode *newNode(int weight){ AVLnode *node=new AVLnode; node->weight=weight; node->height=1; node->lchild=node->rchild=NULL; return node;}int getHeight(AVLtree root){ if(root==NULL) return 0; return root->height;}void updateHeight(AVLtree root){ root->height=max(getHeight(root->lchild),getHeight(root->rchild))+1;}int getBalanceFactor(AVLtree root){ return getHeight(root->lchild)-getHeight(root->rchild);}void L(AVLtree &root){ AVLnode *temp=root->rchild; root->rchild=temp->lchild; temp->lchild=root; updateHeight(root); updateHeight(temp); root=temp;}void R(AVLtree &root){ AVLnode *temp=root->lchild; //root->lchild=temp->lchild; root->lchild=temp->rchild; temp->rchild=root; updateHeight(root); updateHeight(temp); root=temp;}void insert(AVLtree &root,int weight){ if(root==NULL){ root=newNode(weight); return; } if(weight<root->weight){ insert(root->lchild,weight); updateHeight(root); if(getBalanceFactor(root)==2){ if(getBalanceFactor(root->lchild)==1){ R(root); } else if(getBalanceFactor(root->lchild)==-1){ L(root->lchild); R(root); } } } else{ insert(root->rchild,weight); updateHeight(root); if(getBalanceFactor(root)==-2){ if(getBalanceFactor(root->rchild)==-1){ L(root); } else if(getBalanceFactor(root->rchild)==1){ R(root->rchild); L(root); } } }}bool bfs(AVLnode *root){ int count=0; queue<AVLnode*> q; q.push(root); bool flag=true; while(count<n){ AVLnode* p=q.front(); q.pop(); if(p!=NULL){ printf("%d",p->weight); count++; if(count!=n){ printf(" "); } else{ printf("\n"); } q.push(p->lchild); q.push(p->rchild); } else{ if(count<n){ flag=false; } } } return flag;}int main(){ int weight; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d",&weight); insert(root,weight); } //printf("%d",root->weight); bool flag=bfs(root); if(flag) printf("YES"); else printf("NO");}
0 0
- 1123. Is It a Complete AVL Tree (30) PAT 甲级
- PAT 甲级 1123. Is It a Complete AVL Tree (30)
- 1123. Is It a Complete AVL Tree (30)-PAT甲级真题
- PAT 1123. Is It a Complete AVL Tree (30)
- PAT--1123. Is It a Complete AVL Tree (30)
- pat 1123. Is It a Complete AVL Tree (30)
- PAT 1123. Is It a Complete AVL Tree (30)
- PAT(A)-1123. Is It a Complete AVL Tree (30)(AVL+bfs)
- 【PAT】1123. Is It a Complete AVL Tree
- PAT A1123. Is It a Complete AVL Tree (30)
- PAT A1123. Is It a Complete AVL Tree (30)
- PAT A1123. Is It a Complete AVL Tree (30)
- 1123. Is It a Complete AVL Tree
- PAT (Advanced Level) Practise 1123. Is It a Complete AVL Tree (30)
- PAT (Advanced Level) 1123. Is It a Complete AVL Tree (30)
- 【PAT】【Advanced Level】1123. Is It a Complete AVL Tree (30)
- PAT 1123. Is It a Complete AVL Tree (30) 平衡树构建+ 完全二叉树判断
- pat甲1123. Is It a Complete AVL Tree (AVL树+层次遍历+完全二叉树)
- An internal error occurred during: "Launching xx". java.lang.NullPointerException的一个解决方法
- 数字三角形:逆推法
- java:集合
- base64和urlencode的区别和使用场景
- 课程管理网站设计、JSP、Servlet、WebUploader、jQuery、UEditor、包含源码
- 1123. Is It a Complete AVL Tree (30) PAT 甲级
- 深入浅出 jsonp 转:https://lzw.me/a/jsonp.html
- c++从文档中读入数据和把输出数据写入文档
- BZOJ 2820: YY的GCD
- Android项目:Cool Weather酷欧天气(附源码)
- Reveal破解版安装集成的两种姿势
- android studio安装教程
- 2.24
- leetcode题解-299. Bulls and Cows