Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/18: Рейтинг темы: голосов - 18, средняя оценка - 5.00
2 / 2 / 3
Регистрация: 24.07.2015
Сообщений: 75
1

Реализация бинарного дерева поиска

02.05.2016, 13:19. Просмотров 3276. Ответов 2
Метки нет (Все метки)

Есть код, Помогите найти ошибку.

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
using System;
 
namespace BinarySearchTree
{
    public class Node
    {
        public int value;
        public Node left;
        public Node right;
        public void ShowNode()
        {
            Console.Write(value + " ");
        }
    }
 
    public class BST
    {
        public Node root;
        public BST()
        {
            root = null;
        }
 
        public void Insert(int i)
        {
            Node newNode = new Node();
            newNode.value = i;
            if (root == null)
                root = newNode;
            else
            {
                Node current = root;
                Node parent;
                while (true)
                {
                    parent = current;
                    if (i < current.value)
                    {
                        current = current.left;
                        if (current == null)
                        {
                            parent.left = newNode;
                            break;
                        }
                        else
                        {
                            current = current.right;
                            if (current == null)
                            {
                                parent.right = newNode;
                                break;
                            }
                        }
                    }
                }
            }
        }
        public void Walk (Node theRoot)
        {
            if (!(theRoot == null))
            {
                Walk (theRoot.left);
                theRoot.ShowNode();
                Walk (theRoot.right);
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            BST data = new BST();
            string[] str = Console.ReadLine().Split(' ');
            foreach (string s in str)
                data.Insert(int.Parse(s));
            Console.WriteLine("Обход дерева: ");
            data.Walk(data.root);
        }
    }
}
Добавлено через 14 часов 23 минуты
В общем ошибка кроется где-то в методе Insert. Метод работает только для первого вставляемого узла (не считая корневого.
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.05.2016, 13:19
Ответы с готовыми решениями:

В рабочей программе добавить для дерева бинарного поиска нахождение отрицательных значений узлов дерева
Полностью готовая программа, но что дописать в мейне чтобы он выводил произведение отрицательных...

Представление и реализация бинарного дерева
Составить программу, которая создает из заданного множества (67, 78, 70, 74, 123, 120, 54, 57, 34,...

Представление и реализация бинарного дерева
1. Составить программу, которая создает из заданного множества (представлено ниже) бинарное дерево....

Реализация списка или бинарного дерева
Здравствуйте. Подскажите пожалуйста, как правильно реализовать список или бинарное дерево на шарпе,...

2
Эксперт .NET
14475 / 10919 / 2883
Регистрация: 17.09.2011
Сообщений: 18,442
02.05.2016, 14:02 2
Цитата Сообщение от Milkho Посмотреть сообщение
C#
1
2
                    if (i < current.value)
                    {
А что делает ваш алгоритм, если i >= current.Value?
1
2 / 2 / 3
Регистрация: 24.07.2015
Сообщений: 75
02.05.2016, 16:52  [ТС] 3
Упс. Теперь все работает.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if (i < current.value)
                    {
                        current = current.left;
                        if (current == null)
                        {
                            parent.left = newNode;
                            break;
                        }
                    }
                    else
                    {
                        current = current.right;
                        if (current == null)
                        {
                            parent.right = newNode;
                            break;
                        }
 
                    }
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.05.2016, 16:52

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Реализация бинарного дерева с использованием указателей
Ребят здравствуйте . Хочу реализовать бинарное дерево на С#. Проблема у меня в следующем : при...

Удаление элемента из двоичного бинарного дерева поиска
Здравствуйте! Подскажите пожалуйста, как удалить элемент из двоичного бинарного дерева поиска,...

Реализовать прямой НЕрекурсивный обход бинарного дерева поиска
Нужно реализовать прямой НЕрекурсивный обход бинарного дерева поиска. Добавлено через 11 минут...

Реализация многочлена (класс на основе списка, бинарного или сбалансированного дерева)
Здравствуйте! Скоро сдавать зачет и препод скорее всего попросит написать на листочке реализацию...


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

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

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