解题报告-PAT-Complete Binary Search Tree
2016-10-18 22:52
330 查看
原题链接:https://pta.patest.cn/pta/test/1342/exam/4/question/20493
浙大oj:1064题
输入题意:输入一组数,根据这组数构造一个二叉排序树而且是完全二叉树。输出这个树的层次遍历序列。
解题思路:
先把输入的序列排序得到num[]数组,然后构造一个普通的n个节点的完全二叉树,节点值可以随意输入,之后利用中序遍历将num[]数组中的值一次填入,利用了二叉排序树的中序遍历序列是递增序列的性质。
源代码:
浙大oj:1064题
输入题意:输入一组数,根据这组数构造一个二叉排序树而且是完全二叉树。输出这个树的层次遍历序列。
解题思路:
先把输入的序列排序得到num[]数组,然后构造一个普通的n个节点的完全二叉树,节点值可以随意输入,之后利用中序遍历将num[]数组中的值一次填入,利用了二叉排序树的中序遍历序列是递增序列的性质。
源代码:
# include <stdio.h> # include <algorithm> # define MAX 1010 using namespace std; typedef struct Node{ struct Node *l; struct Node *r; int data; }*BiTree,Node; int num[MAX]; BiTree q[MAX]; //层次遍历队列 int co = 0; //中序遍历填数标记 //递归中序遍历 void InOrder(BiTree T){ if(T!=NULL){ InOrder(T->l); T->data = num[co++]; InOrder(T->r); } } /* 解题思路: 先层次遍历构造一个二叉链表存储的完全二叉树 在中序遍历填入相关数据 最后层次遍历输出 */ int main(){ //预处理 int n; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d",&num[i]); } sort(num,num+n); //层次遍历建完全二叉树 BiTree p,T; //初始化根节点 T = (BiTree) malloc(sizeof(Node)); T->data=1; T->l = T->r = NULL; int count = 1,front =0,rear = 1; q[0] = T; //初始化队列 while(count <n && front < rear){ p = q[front++]; if(p->l == NULL){ BiTree temp; temp = (BiTree)malloc(sizeof(Node)); temp -> l = temp -> r = NULL; temp -> data = count+1; //数据填入什么都可以,之后还要重新填入 p->l = temp; q[rear++] = temp; count++; if(count >= n) break; } if(p->r == NULL){ BiTree temp; temp = (BiTree)malloc(sizeof(Node)); temp->l = temp->r = NULL; temp ->data = count+1; p->r = temp; q[rear++] = temp; count++; if(count >= n) break; } } //中序遍历填入数据 InOrder(T); //层次遍历输出结果 front = 0; rear = 1; q[0] = T; int flag = 0; //输出格式控制 while(front < rear){ p = q[front++]; if(p-& 4000 gt;l!=NULL) q[rear++] = p->l; if(p->r!=NULL) q[rear++] = p->r; if(flag) printf(" "); flag++; printf("%d",p->data); } printf("\n"); return 0; }
相关文章推荐
- 1064. Complete Binary Search Tree (30)解题报告
- 【LeetCode】Convert Sorted Array to Binary Search Tree 解题报告
- LeetCode解题报告 108. Convert Sorted Array to Binary Search Tree [medium]
- 【LeetCode】108.Convert Sorted Array to Binary Search Tree(Easy)解题报告
- PAT 1064. Complete Binary Search Tree (30)
- [leetcode]98. Validate Binary Search Tree@Java解题报告
- 【PAT】【Advanced Level】1064. Complete Binary Search Tree (30)
- [Leetcode] 235. Lowest Common Ancestor of a Binary Search Tree 解题报告
- [LeetCode] Validate Binary Search Tree 解题报告
- PAT甲级1064. Complete Binary Search Tree (30)
- 1064. Complete Binary Search Tree (30)【二叉树】——PAT (Advanced Level) Practise
- PAT甲级 1064. Complete Binary Search Tree (30)
- PAT_1064: Complete Binary Search Tree
- PAT 1064. Complete Binary Search Tree (30)
- 【原创】leetCodeOj ---Convert Sorted List to Binary Search Tree 解题报告
- 【LeetCode】Validate Binary Search Tree 解题报告
- LeetCode Convert Sorted List to Binary Search Tree 解题报告
- PAT1064:Complete Binary Search Tree (Java实现)
- PAT题库-1064. Complete Binary Search Tree (30)
- PAT-A 1064. Complete Binary Search Tree (30)