Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //wyswietlanie preorder
- //dodawanie rekurencyjne
- //usuwanie drzewa
- //wyswietlanie liczby wewnetrznych wezlow
- #include <stdlib.h>
- #include <stdio.h>
- struct treeNode {
- int data, klucz;
- struct treeNode *lewy, *prawy;
- } *root;
- void addNode(struct treeNode **root, int data, int klucz) {
- if(*root) {
- if((*root)->klucz >= klucz)
- addNode(&(*root)->lewy, data, klucz);
- else
- addNode(&(*root)->prawy, data, klucz);
- } else {
- *root = (struct treeNode *)malloc(sizeof(struct treeNode));
- (*root)->data = data;
- (*root)->klucz = klucz;
- (*root)->lewy = (*root)->prawy = NULL;
- }
- }
- void printTreePreOrder(struct treeNode *root) {
- if(root) {
- printf("K:%d|W:%d ", root->klucz, root->data);
- printTreePreOrder(root->lewy);
- printTreePreOrder(root->prawy);
- }
- }
- void deleteTree(struct treeNode **root) {
- if(*root) {
- deleteTree(&(*root)->lewy);
- deleteTree(&(*root)->prawy);
- free(*root);
- *root = NULL;
- }
- }
- int ileWewnetrznych(struct treeNode *root) {
- if(root) {
- if(root->lewy && root->prawy)
- return 1 + ileWewnetrznych(root->lewy) + ileWewnetrznych(root->prawy);
- else return 0;
- }
- }
- int main(void) {
- addNode(&root, 4, 4);
- addNode(&root, 2, 2);
- addNode(&root, 6, 6);
- addNode(&root, 1, 1);
- addNode(&root, 3, 3);
- addNode(&root, 5, 5);
- addNode(&root, 7, 7);
- printf("Wypisanie drzewa PreOrder:\n");
- printTreePreOrder(root);
- printf("\nIlosc wezlow wewnetrznych: %d", ileWewnetrznych(root));
- printf("\n\nUsuwanie drzewa");
- deleteTree(&root);
- printf("\nIlosc wezlow wewnetrznych: %d", ileWewnetrznych(root));
- printf("\nWypisania drzewa PreOrder:\n");
- printTreePreOrder(root);
- printf("\n\n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement