Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 28.01.2013
Сообщений: 58
1

Бинарное дерево поиска(удаление елемента)

30.10.2016, 13:31. Показов 394. Ответов 0
Метки нет (Все метки)

Есть задание в котором нужно создать бинарное дерево поиска з заданими ключами и значениями которые нужно ввести с клавы удалить из него буквосоединение "ED" и вивести ето в консоль в виде дерева например
ED
/ \
EE EF
/ \ \
DS DD DE
и так дальше вместо вывода в виде
ED EE ES EK итд
пограму поиска и удаления написал но если задавать елементы через в коде через put елементы удаляются а если через сканер то нет вот код
Java
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
package lab5TA;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
 
public class BinTree<K extends Comparable, V> {
 private int size;
 static int num;
 private StringBuilder inString;
 private class Node {
 K key;
 V value; 
 Node right, left;
 Node k4d;
public Node(K key, V value) {
this.key = key;
this.value = value;}}
  private Node root;
private static Scanner input;
  
 private Node find(K key) {
     if (root == null) {
     return null;    }
     Node iterator = root; 
     Node required = root; 
     while (iterator != null) { 
     required = iterator; 
     if (key.compareTo(iterator.key) > 0) {
     iterator = iterator.right;
     } else if (key.compareTo(iterator.key) < 0) {
     iterator = iterator.left;
     } else {
     iterator = null;}}
     return required;}
 public void put(K key, V value) {
     Node node = new Node(key, value); 
     if (root == null) {
     root = node;return; }
     Node parent = find(key);
     if (key.compareTo(parent.key) > 0) {
     parent.right = node;
     } else if (key.compareTo(parent.key) < 0) {
     parent.left = node;
     } else {
     parent.value = node.value;} size++; }
 public int getSize() {
     return size;
    }
 public V get(K key) {
     Node required = find(key);
     return required.key.compareTo(key) == 0 ? required.value : null;}
 private Node getSuccessor(Node removableRight) { 
      if (removableRight.left == null) {
      return removableRight; 
      }
      Node iterator = removableRight;
      Node successor = removableRight; 
      Node successorParent = removableRight; 
      while (iterator != null) {
    
      successorParent = successor;
      successor = iterator;
      iterator = iterator.left;
     }
      successorParent.left = successor.right; 
     
      successor.right = removableRight; 
      return successor;
     }
 public boolean remove(K key) {
     Node removable = root;
     Node parent = root; 
     boolean isLeft = true; 
     while (key.compareTo(removable.key) != 0) { 
     parent = removable;
     if (key.compareTo(removable.key) < 0) {
     removable = removable.left;
     isLeft = true;
     } else if (key.compareTo(removable.key) > 0) {
     removable = removable.right;
     isLeft = false;}
     if (removable == null) {
     return false; }}
     if (removable.left == null && removable.right == null) {
     if (removable == root) {
     root = null; 
     } else if (isLeft) {
     parent.left = null;
     } else {
     parent.right = null;}}
     else {
         Node successor = getSuccessor(removable.right); 
         if (removable == root) { 
        root = successor;
         }
        
        else if (isLeft) {
         parent.left = successor;
         } else {
         parent.right = successor;
         }
         successor.left = removable.left; 
        }
         size--; 
         return true; 
    }
 private String walk(Node node) {
     if (node != null) {
     walk(node.left);
     inString.append(node.value + " "); 
     walk(node.right);
     }
     return inString.toString();
    }
 public String toString() {
     inString = new StringBuilder();
     return walk(root);
    }
 public void deleteel(Node node, V value){
     if (node !=null){
         deleteel(node.left,value);
         if (node.value == value) 
            remove(node.key);
         deleteel(node.right,value);
     }
 
    
 }
 
 public void delete(V value){
     deleteel(root, value);
 
 }
public static void main(String args[]) throws IOException{ int k;
String S;
    BinTree<Integer, String> tree = new BinTree<>();
    input = new Scanner(System.in);
    for(int i=0;i<8;i++){
 
    tree.put(input.nextInt(), input.next());}
/*  tree.put(70, "ED");
    tree.put(90, "EE");
    tree.put(43, "EF");
    tree.put(19, "AD");
    tree.put(37, "DF");
    tree.put(92, "FD");
    tree.put(85, "DF");
    tree.put(107, "SS");*/
    System.out.println("Елемнти дерева:");
    System.out.println(tree);
    System.out.println("Елементи дерева без заданого вузла:");
    tree.delete("ED");
    
    System.out.println(tree);
}
 }
и так проблема с графическим виводом в консоль и с вводом
0

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

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.10.2016, 13:31
Ответы с готовыми решениями:

Бинарное дерево поиска (удаление, добавление элемента)
Задачи В Бинарном дереве поиска 1)введено с клавиатуры значение, если существует узел с таким...

Исходное бинарное дерево превратить в бинарное дерево поиска, при этом сохранив его структуру
Помогите, не могу понять!( Нужно исходное бинарное дерево превратить в бинарное дерево поиска, при...

Бинарное дерево поиска
Давайте рассмотрим некоторый пример Допустим есть числа от 0 до 99 которые добавляются в бинарное...

Бинарное дерево поиска C++
+Доброго времени суток! У меня есть задание:создать картотеку,в ней указать тип магазина,номер...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.10.2016, 13:31

Бинарное дерево поиска
Вот задали лабораторною работу. Сделал бинарное дерево поиска. Выдает ошибку &quot;Что послан сигнал от...

Бинарное дерево поиска
Дали такую задачу: Дан набор попарно не равных целых чисел, по ним строится бинарное дерево...

Бинарное дерево поиска:
Всем добрый вечер) Подскажите пж новичку из-за чего вылетает программа? Я как понял косяк в методе...

Бинарное дерево поиска
Помогите пожалуйста.. Нужна программа &quot;бинарные деревья поиска&quot;.. и если можно объяснение.. ...


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

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

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