Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
-14 / 4 / 4
Регистрация: 19.01.2017
Сообщений: 560
1

Функция, которая печатает элементы из всех листьев бинарного дерева

07.09.2019, 19:15. Показов 2623. Ответов 5
Метки нет (Все метки)

Написать функцию, которая печатает элементы из всех листьев дерева.

Добавлено через 2 часа 26 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <queue>
#include <math.h>
 
struct Node // узел дерева
struct node
{
    int element;
    node *left;
    node *right;
    int height;
};
typedef struct node *nodeptr;
 
void avltree::in_level(nodeptr &p)
{
    int h = 1 << (p->height + 1);
    nodeptr *mas = new nodeptr[h], q;
    int i = 0, k = 1;
    mas[0] = p;
    while(k - i > 0)
    {
       q = mas[i];
       cout << q->element << " ";
       i++;
       if (q->left)
       {
          mas[k] = q->left;
          k++;
       }
       if (q->right)
       {
          mas[k] = q->right;
          k++;
       }
           if((mas[i] && mas[i-1]->element > mas[i]->element) || mas[i-1]->right == mas[i])
                 cout << "\n";
    }
}
Добавлено через 1 минуту
Что нужно добавить, или изменить ?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
struct node
{
    size_t count;
    node* parent;
    node** childs;
    std::string name;
};
 
void printTree(node* t_node, size_t t_level)
{
    if (t_node == NULL)
        return;
        
    for (size_t i = 0; i < t_level; ++i)
        printf("-");
    printf("%s\n", t_node->name);
    for (size_t i = 0; i < t_node->count; ++i)
        printTree(t_node->childs[i], t_level+1);
};
Добавлено через 2 часа 11 минут
Up!
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.09.2019, 19:15
Ответы с готовыми решениями:

Разработать программу, которая выводит на экран элементы из всех листьев дерева
Разработать программу, которая выводит на экран элементы из всех листьев дерева Ругается на 33...

Разработать программу, которая выводит на экран элементы из всех листьев дерева
Разработать программу, которая выводит на экран элементы из всех листьев дерева #define...

Функция вывода листьев бинарного дерева
Написал функцию вывода всего что есть в дереве. помогите переделать ее так чтобы она выводила...

Вывести разность значений всех листьев бинарного дерева
Дан указатель P1 на корень непустого дерева. Вывести разность значений всех листьев данного...

5
6737 / 4537 / 1838
Регистрация: 07.05.2019
Сообщений: 13,725
Записей в блоге: 1
07.09.2019, 20:09 2
Цитата Сообщение от Like_society Посмотреть сообщение
Что нужно добавить, или изменить ?
А что не так?
Разве что printf("%s\n", t_node->name.c_str());, но, по-моему, и без этого должно работать
0
-14 / 4 / 4
Регистрация: 19.01.2017
Сообщений: 560
07.09.2019, 20:11  [ТС] 3
oleg-m1973, какие из вариантов лучше, можете помочь?
0
6737 / 4537 / 1838
Регистрация: 07.05.2019
Сообщений: 13,725
Записей в блоге: 1
07.09.2019, 20:18 4
Цитата Сообщение от Like_society Посмотреть сообщение
oleg-m1973, какие из вариантов лучше, можете помочь?
Зависит от того, что именно ты хочешь сделать. Например, распечатать список элементов в порядке сортировки
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
struct node
{
    int element;
    node* left;
    node* right;
    int height;
};
 
void printTree(node* t_node)
{
    if (t_node == NULL)
        return;
 
    printTree(t_node->left);
    printf("%d\n", t_node->element);
    printTree(t_node->right);
};
0
-14 / 4 / 4
Регистрация: 19.01.2017
Сообщений: 560
07.09.2019, 20:21  [ТС] 5
oleg-m1973, хочу чтобы печатались элементы из всех листьев дерева.
0
6737 / 4537 / 1838
Регистрация: 07.05.2019
Сообщений: 13,725
Записей в блоге: 1
07.09.2019, 20:29 6
Лучший ответ Сообщение было отмечено Like_society как решение

Решение

Цитата Сообщение от Like_society Посмотреть сообщение
oleg-m1973, хочу чтобы печатались элементы из всех листьев дерева.
C++
1
2
3
4
5
6
7
8
9
10
11
12
void printTree(node* t_node)
{
    if (t_node == NULL)
        return;
 
    printTree(t_node->left);
 
    if (!t_node->left && !t_node->right)
         printf("%d\n", t_node->element);
 
    printTree(t_node->right);
};
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.09.2019, 20:29

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Вывод списка всех листьев бинарного дерева поиска
Нужно реализовать бинарное дерево поиска и вывести все его вершины, не имеющие потомков. Само...

Написать рекурсивную процедуру, которая печатает элементы из всех листьев дерева
Добрый день! Прошу помочь с написанием программы: Написать рекурсивную процедуру, которая...

Составить программу вывода всех листьев бинарного дерева
У кого может есть готовая, поделитесь пожалуйста, буду очень благодарен. Добавлено через 23 часа...

Вывести элементы из всех листьев дерева
Здравствуйте, помогите пожалуйста с заданием по прологу, нужно вывести элементы из всех листьев...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.