Skip to content

Commit

Permalink
add tree problems
Browse files Browse the repository at this point in the history
  • Loading branch information
witek-formanski committed Nov 29, 2023
1 parent 2e460e5 commit 0e30e37
Show file tree
Hide file tree
Showing 3 changed files with 79 additions and 11 deletions.
35 changes: 24 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

_WDP\* MIM UW_

## Zadania
## _Zadania_

## Ćwiczenia

### Ćwiczenia I: [Wstęp](./pdf/WDP_.Inf.23_24Z__Wstęp.pdf) 2023.10.02

Expand All @@ -29,11 +31,6 @@ _WDP\* MIM UW_
- [count_zeros](./src/cw2/zad10/count_zeros.c): [zad. 10.] ile jest zer na końcu n! (C)
- [count_ones](./src/cw2/zad12/count_ones.c): [zad. 12.] ile jest jedynek w zapisie binarnym liczby n (C)

### Laboratorium I: [Podzielny fragment ciągu](./pdf/WDP_.Inf.23_24Z__Laboratorium_1__rozgrzewka.pdf) 2023.10.04

- [divisible_sequence](./src/lab1/divisible_sequence.c): najdłuższy dzielny fragment ciągu (C) :white_check_mark::microscope:
- [divisible_sequence](./src/lab1/divisible_sequence.cpp): najdłuższy dzielny fragment ciągu (C++) :white_check_mark::microscope:

### Ćwiczenia III: [Zadania na tablice](./pdf/WDP_.Inf.23_24Z__Zadania_na_tablice.pdf) 2023.10.09, 2023.10.11, 2023.10.16

- [zad. 1.] obrót tablicy
Expand Down Expand Up @@ -78,11 +75,6 @@ _WDP\* MIM UW_
- [zad. 17.] ciąg ciągu różnicowego
- [diff_diff_seq_fam](./src/cw3/zad17/diff_diff_seq_fam.c) (C) :white_check_mark::microscope:

### Laboratorium II: [Gra w skakanie (NWD)](./pdf/WDP_.Inf.23_24Z__Zadanie_rozgrzewkowe_2.pdf) 2023.10.11

- [game.c](./src/lab2/game.c): strategia wygrywająca (C) :white_check_mark::microscope:
- [game.h](./src/lab2/game.h): prototyp funkcji :white_check_mark::microscope:
- [evaluate_game.c](./src/lab2/evaluate_game.c): program grający w grę (C) :white_check_mark::microscope:

### Ćwiczenia IV: [Złożoność czasowa i pamięciowa](./pdf/WDP_.Inf.23_24Z__Złożoność_czasowa_i_pamięciowa.pdf) 2023.10.18

Expand Down Expand Up @@ -161,6 +153,27 @@ _WDP\* MIM UW_
- [zad. 12.]
- [zad_12](./src/cw6/zad12/zad12.cpp): autor: @pixelkubek (C++) :white_check_mark:

### Ćwiczenia VII: [Zastosowanie sortowania](WDP_.Inf.23_24Z__Zastosowanie_sortowania.pdf)

### Ćwiczenia VIII: [Listy i drzewa](WDP_.Inf.23_24Z__Listy_i_drzewa.pdf) 2023.11.29

## Laboratoria

### Laboratorium I: [Podzielny fragment ciągu](./pdf/WDP_.Inf.23_24Z__Laboratorium_1__rozgrzewka.pdf) 2023.10.04

- [divisible_sequence](./src/lab1/divisible_sequence.c): najdłuższy dzielny fragment ciągu (C) :white_check_mark::microscope:
- [divisible_sequence](./src/lab1/divisible_sequence.cpp): najdłuższy dzielny fragment ciągu (C++) :white_check_mark::microscope:

### Laboratorium II: [Gra w skakanie (NWD)](./pdf/WDP_.Inf.23_24Z__Zadanie_rozgrzewkowe_2.pdf) 2023.10.11

- [game.c](./src/lab2/game.c): strategia wygrywająca (C) :white_check_mark::microscope:
- [game.h](./src/lab2/game.h): prototyp funkcji :white_check_mark::microscope:
- [evaluate_game.c](./src/lab2/evaluate_game.c): program grający w grę (C) :white_check_mark::microscope:

## Zadania zaliczeniowe z laboratoriów

_wkrótce_

## Kolokwia

### [Kolokwium I 2022/2023](./pdf/2022_I_Kolokwium.pdf)
Expand Down
30 changes: 30 additions & 0 deletions src/cw8/count_symmetrical_nodes.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/*
policz węzły drzewa które mają tyle samo kroków do korzenia
co do najgłębszego liścia
*/


#include <stdlib.h>

typedef struct bin_tree bin_tree;

struct bin_tree {
int data;
bin_tree* left;
bin_tree* right;
};

int count_symmetrical(bin_tree *t, int depth, int* max_depth) {
if (!t) {
*max_depth = -1;
return 0;
}

int max_depth_left, max_depth_right, count = 0;
count += count_symmetrical(t->left, depth+1, &max_depth_left);
count += count_symmetrical(t->right, depth+1, &max_depth_right);

*max_depth = 1 + max(max_depth_left, max_depth_right);
if (*max_depth == depth) ++count;
return count;
}
25 changes: 25 additions & 0 deletions src/cw8/zad8/jump_traversal.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#include <stdlib.h>

typedef struct bin_tree bin_tree;

struct bin_tree {
int data;
bin_tree* left;
bin_tree* right;
};

void visit(bin_tree *t) {}

void jump_traversal(bin_tree *t, int depth_mod2) {
if (!t) return;

if (depth_mod2) visit(t);
jump_traversal(t->left, 1 - depth_mod2);
jump_traversal(t->right, 1 - depth_mod2);
if (!depth_mod2) visit(t);
}

int main() {
bin_tree t;
jump_traversal(&t, 0);
}

0 comments on commit 0e30e37

Please sign in to comment.