1115. Counting Nodes in a BST (30)
来源:互联网 发布:网络集成商 编辑:程序博客网 时间:2024/05/22 02:03
题目见这里
BST结构体中add一个level变量,创建BST时,需要在add结点之前根据将来的父结点得到该结点的level值,然后就是LevelOrder了,从后往前扫描bstQ(结点队列)即可
代码如下:
#include <stdio.h>#include <stdlib.h>#define N 1005 typedef struct node{ int level; int data; struct node *lChild, *rChild;}BST;BST* CreatBST(int n){ int i,data; BST *bst,*bst1,*node; for(i=1;i<=n;i++){ node = (BST *)malloc(sizeof(BST)); scanf("%d",&(node->data)); node->lChild = node->rChild = NULL; if(i==1){ node->level = 0; bst = node; //此处不能赋值bst1 } else{ bst1 = bst; while(bst1){ //主要是为了获得下一个结点的level if(bst1->data<node->data){ if(bst1->rChild==NULL){ node->level = bst1->level + 1; bst1->rChild = node; break; } else bst1 = bst1->rChild; } else{ if(bst1->lChild==NULL){ node->level = bst1->level + 1; bst1->lChild = node; break; } else bst1 = bst1->lChild; } } } } return bst;}void Solve(BST *bst, int n){ BST *bstQ[N],*tmp; int front,rear; front = rear = 0; bstQ[rear++] = bst; while(front<rear){ tmp = bstQ[front++]; if(tmp->lChild) bstQ[rear++] = tmp->lChild; if(tmp->rChild) bstQ[rear++] = tmp->rChild; } int res[2]={0}; int i,level; i = 0; front = 0; level=bstQ[rear-1]->level; while(rear>front){ if(bstQ[--rear]->level==level) res[i] ++; else{ i ++; if(i==2) break; res[i] = 1; level = bstQ[rear]->level; } } printf("%d + %d = %d\n",res[0],res[1],res[0]+res[1]);}int main(){// freopen("Data.txt","r",stdin); BST *bst; //not bst,error:bst.lChild is a bst point int n; scanf("%d",&n); bst = CreatBST(n); Solve(bst,n); return 0;}
阅览时间:
2017-07-25,23:39
阅读全文
1 0
- 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)
- 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)[bst+dfs遍历]
- PAT A 1115. Counting Nodes in a BST (30)
- PAT--1115. Counting Nodes in a BST
- 1115. Counting Nodes in a BST
- 1115. Counting Nodes in a BST
- 【PAT】1115. Counting Nodes in a BST
- 1115. Counting Nodes in a BST 解析
- 关于文本标签的使用
- 面试题_Selenium
- ThinkPHP3.2自带的七牛云配置使用
- js查看浏览器类型和版本
- 解决 github push failed (remote: Permission to userA/repo.git denied to userB.)
- 1115. Counting Nodes in a BST (30)
- Discuz X3.2 论坛关闭后,MySQL帖子导出为.csv
- 机器学习之数学基础(概率与统计推断、矩阵、凸优化)
- 步步紧逼!英特尔至强E7 v3对决IBM POWER8
- LeetCode#109. Convert Sorted List to Binary Search Tree
- Zookeeper集群搭建(涵盖命令详解)与Error contacting service. It is probably not running的问题解决
- Android匿名共享内存和MemoryFile
- C语言:列举system函数如何修改控制台背景及文字颜色
- hdu 4348 主席树的区间更新