1115. Counting Nodes in a BST (30) PAT 甲级
来源:互联网 发布:淘宝有没有死店一说 编辑:程序博客网 时间:2024/05/17 09:09
传送门
动态链表实现
#include<stdio.h>#include<queue>using namespace std;#define MAX_N 1100typedef struct Node{ int data; Node *lchild,*rchild; int level;}bsnode,*BStree;int n;int level[MAX_N];void insert(BStree &root,int data){ if(root==NULL){ root=new bsnode; root->data=data; root->lchild=NULL; root->rchild=NULL; return ; } if(data<=root->data) insert(root->lchild,data); else insert(root->rchild,data);}//void in(BStree root){// if(root==NULL)// return;// in(root->lchild);// printf("%d ",root->data);// in(root->rchild);//}void bfs(BStree root){ queue <bsnode*> q; root->level=0; q.push(root); int max=-1; while(!q.empty()){ bsnode *node=q.front(); q.pop(); if(node->level>max){ max=node->level; } if(node->lchild!=NULL){ (node->lchild)->level=(node->level)+1; q.push(node->lchild); } if(node->rchild!=NULL){ (node->rchild)->level=(node->level)+1; q.push(node->rchild); } level[node->level]++; } printf("%d + %d = %d\n",level[max],level[max-1],level[max]+level[max-1]);}int main(){ scanf("%d",&n); int data; BStree root=NULL; for(int i=0;i<n;i++){ scanf("%d",&data); insert(root,data); } //in(root); bfs(root);}
静态链表实现
#include<stdio.h>#include<queue>using namespace std;#define MAX_N 1100struct Node{ int data; int lchild,rchild; int level;}node[MAX_N];int n;void insert(int i,int &root){ if(root==-1){ root=i; return ; } else{ if(node[i].data<=node[root].data) insert(i,node[root].lchild); else insert(i,node[root].rchild); }}void in(int root){ if(root==-1) return; in(node[root].lchild); printf(" %d",node[root].data); in(node[root].rchild);}void bfs(int root){ //printf("bfs\n"); queue<int> q; int max=-1; node[root].level=1; q.push(root); while(!q.empty()){ int p=q.front(); q.pop(); if(node[p].level>max){ max=node[p].level; } if(node[p].lchild!=-1){ node[node[p].lchild].level=node[p].level+1; q.push(node[p].lchild); } if(node[p].rchild!=-1){ node[node[p].rchild].level=node[p].level+1; q.push(node[p].rchild); } } int n1=0,n2=0; for(int i=0;i<n;i++){ if(node[i].level==max){ n1++; } if(node[i].level==max-1){ n2++; } } printf("%d + %d = %d",n1,n2,n1+n2);}int main(){ int num; int root=-1; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d",&num); node[i].data=num; node[i].lchild=node[i].rchild=-1; insert(i,root); } //in(root); bfs(root);}
0 0
- 1115. Counting Nodes in a BST (30) PAT 甲级
- PAT 甲级 1115. Counting Nodes in a BST (30)
- PAT--1115. Counting Nodes in a BST
- 【PAT】1115. Counting Nodes in a BST
- PAT A 1115. Counting Nodes in a BST (30)
- solution Of Pat 1115. Counting Nodes in a BST (30)
- PAT 1115. Counting Nodes in a BST (30)
- pat 1115. Counting Nodes in a BST (30)
- 【PAT】【Advanced Level】1115. Counting Nodes in a BST (30)
- PAT 1115. Counting Nodes in a BST (30) 建树
- 1115. Counting Nodes in a BST (30)-PAT甲级真题(二叉树的遍历,dfs)
- 1115. Counting Nodes in a BST (30)
- 1115. Counting Nodes in a BST (30)
- 1115. Counting Nodes in a BST (30)
- 1115. Counting Nodes in a BST (30)
- 1115. Counting Nodes in a BST (30)
- 1115. Counting Nodes in a BST (30)
- 1115. Counting Nodes in a BST (30)
- WordPress函数:wp_page_menu(页面菜单)
- 构建Docker平台【第一篇】环境准备
- 分布式文件系统
- 模板标签-wp_page_menu()
- 用户文件资料存取(千万级别用户资料文件夹简单保存)
- 1115. Counting Nodes in a BST (30) PAT 甲级
- 1021 Problem B按要求输出
- HMM
- [sql]truncate与delete的区别
- UGUI学习手记-EventSystem
- jQuery.cropper裁剪
- caffe中HDF5层及数据生成
- 2660 Problem C上直角三角形输出
- 144. Binary Tree Preorder Traversal