1110. Complete Binary Tree (25)解题报告
来源:互联网 发布:汽车导航怎么链接网络 编辑:程序博客网 时间:2024/05/20 14:27
根结点是唯一没有父亲的结点。
递归还原树的结构。
n结点完全二叉树用数组表示时,正好连续占据数组前n个位置。
#define _CRT_SECURE_NO_WARNINGS#include <cstdio>#include <cstdlib>#include <cstring>struct node {int left, right;};void recovery(node arr1[], int n, int arr2[], int index1, int index2);int findroot(node arr[], int n);int main(void) {int n, i, root;char str1[10], str2[10];scanf("%d", &n);int *arr1 = (int *)calloc(n, sizeof(int));node *arr2 = (node *)calloc(n, sizeof(node));for (i = 0; i < n; i++) {arr1[i] = -1;scanf("%s %s", str1, str2);if (strcmp(str1, "-")) {arr2[i].left = atoi(str1);}else {arr2[i].left = -1;}if (strcmp(str2, "-")) {arr2[i].right = atoi(str2);}else {arr2[i].right = -1;}}root = findroot(arr2, n);recovery(arr2, n, arr1, root, 0);bool flag = true;for (i = 0; i < n; i++) {if (arr1[i] == -1) {flag = false;break;}}if (flag) {printf("%s %d\n", "YES", arr1[n - 1]);}else {printf("%s %d\n", "NO", arr1[0]);}delete[] arr1;delete[] arr2;return 0;}void recovery(node arr1[], int n, int arr2[], int index1, int index2){if (index1 > -1 && index2 < n) {arr2[index2] = index1;recovery(arr1, n, arr2, arr1[index1].left, index2 * 2 + 1);recovery(arr1, n, arr2, arr1[index1].right, index2 * 2 + 2);}return;}int findroot(node arr[], int n) {bool flag = false, *hasparent = (bool *)calloc(n, sizeof(bool));int i;for (i = 0; i < n; i++) {if (arr[i].left >= 0) {hasparent[arr[i].left] = true;}if (arr[i].right >= 0) {hasparent[arr[i].right] = true;}}for (i = 0; i < n; i++) {if (!hasparent[i]) {break;}}delete[] hasparent;return i;}
0 0
- 1110. Complete Binary Tree (25)解题报告
- 解题报告-PAT-Complete Binary Search Tree
- 1064. Complete Binary Search Tree (30)解题报告
- 1110. Complete Binary Tree (25)
- 1110. Complete Binary Tree (25)
- 1110. Complete Binary Tree (25)
- 1110. Complete Binary Tree (25)
- 1110. Complete Binary Tree (25)
- 1110. Complete Binary Tree (25)
- 1110. Complete Binary Tree (25)
- 1110. Complete Binary Tree (25)
- 1110. Complete Binary Tree (25)
- 1110. Complete Binary Tree (25)
- 1110. Complete Binary Tree (25)
- 1110. Complete Binary Tree (25)
- 1110. Complete Binary Tree (25)
- 1110. Complete Binary Tree (25)
- 1110. Complete Binary Tree
- mount 错误 “RPC: failed to contact local rpcbind server (errno 5)
- 268. Missing Number 难度:medium
- Pattern Recognition and Machine Learning 第二章 概率分布
- Java 实现发邮件
- 实现自己的卷积神经网络
- 1110. Complete Binary Tree (25)解题报告
- 如何使字符串中每隔单词的首字母大写,其余部分小写?
- Yii2场景使用方法
- 快排实现
- 2016年要结束了,你还有什么遗憾没有完成吗?
- 2016年走过的路(待更新)
- PPP协议的配置(以H3C模拟器为例)
- SVN “工作副本 “...” 已经锁定”的解决办法
- 初识JVM-JVM运行机制(2)