Add a4/program.c
This commit is contained in:
parent
b37dd73112
commit
b1c6da09fc
61
a4/program.c
Normal file
61
a4/program.c
Normal file
@ -0,0 +1,61 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main() {
|
||||
int arr[100]; // Array to store the input numbers
|
||||
int n = 0; // To keep track of how many numbers we have
|
||||
|
||||
// Input the numbers
|
||||
while (scanf("%d", &arr[n]) == 1) {
|
||||
n++;
|
||||
}
|
||||
|
||||
// Check if the array is a min-heap
|
||||
int isHeap = 1; // Flag to indicate whether it's a min-heap
|
||||
|
||||
for (int i = 0; i < n; i++) {
|
||||
int left = 2 * i + 1;
|
||||
int right = 2 * i + 2;
|
||||
|
||||
// Check if left child exists and if it is smaller than the parent
|
||||
if (left < n && arr[i] > arr[left]) {
|
||||
isHeap = 0; // Not a min-heap
|
||||
break;
|
||||
}
|
||||
|
||||
// Check if right child exists and if it is smaller than the parent
|
||||
if (right < n && arr[i] > arr[right]) {
|
||||
isHeap = 0; // Not a min-heap
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (isHeap == 0) {
|
||||
printf("Nie je kopa.\n"); // If it's not a min-heap, print this
|
||||
return 0; // End the program
|
||||
}
|
||||
|
||||
// If it's a min-heap, print the binary tree in preorder
|
||||
printf("Je to taka kopa:\n");
|
||||
|
||||
// Function to print tree in preorder
|
||||
void printPreorder(int i, int level) {
|
||||
if (i >= n) {
|
||||
return; // Stop if index is out of bounds
|
||||
}
|
||||
|
||||
// Print the current node with spaces for the level
|
||||
for (int j = 0; j < level; j++) {
|
||||
printf(" ");
|
||||
}
|
||||
printf("%d\n", arr[i]);
|
||||
|
||||
// Recursively print left and right children
|
||||
printPreorder(2 * i + 1, level + 1); // Left child
|
||||
printPreorder(2 * i + 2, level + 1); // Right child
|
||||
}
|
||||
|
||||
// Start with the root node
|
||||
printPreorder(0, 0);
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user