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