Skip to content

Commit 093c03a

Browse files
Merge pull request #16 from mehmetpekdemir/develop
Develop
2 parents 022551a + 91746b0 commit 093c03a

File tree

2 files changed

+66
-4
lines changed

2 files changed

+66
-4
lines changed

src/com/mehmetpekdemir/Main.java

+28
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.mehmetpekdemir;
22

33
import java.util.PriorityQueue;
4+
import java.util.TreeSet;
45

56
import com.mehmetpekdemir.list.doublylinkedlist.EmployeeDoublyLinkedList;
67
import com.mehmetpekdemir.list.singlylinkedlist.EmployeeLinkedList;
@@ -220,6 +221,33 @@ public static void main(String[] args) {
220221
System.out.println(tree.min());
221222
System.out.println(tree.max());
222223

224+
tree.delete(30);
225+
tree.traverseInOrder();
226+
227+
System.out.println("\n----------TreeSet----------");
228+
229+
TreeSet<Employee> treeSet = new TreeSet<Employee>();
230+
treeSet.add(new Employee(1L, "Mehmet", "Pekdemir"));
231+
treeSet.add(new Employee(2L, "Mehmet2", "Pekdemir2"));
232+
treeSet.add(new Employee(3L, "Mehmet3", "Pekdemir3"));
233+
234+
// Duplicates will not get insert
235+
treeSet.add(new Employee(3L, "Mehmet3", "Pekdemir3"));
236+
237+
treeSet.forEach(System.out::println);
238+
239+
System.out.println("\n----------TreeSet String----------");
240+
TreeSet<String> treeSetString = new TreeSet<String>();
241+
242+
treeSetString.add("Mehmet");
243+
treeSetString.add("Pekdemir");
244+
treeSetString.add("Test");
245+
treeSetString.add("A");
246+
treeSetString.add("B");
247+
treeSetString.add("C");
248+
249+
treeSetString.forEach(System.out::println);
250+
223251
}
224252

225253
}

src/com/mehmetpekdemir/tree/Tree.java

+38-4
Original file line numberDiff line numberDiff line change
@@ -42,21 +42,55 @@ public TreeNode get(int value) {
4242

4343
return null;
4444
}
45-
45+
4646
public int min() {
47-
if(root == null) {
47+
if (root == null) {
4848
return Integer.MIN_VALUE;
4949
} else {
5050
return root.min();
5151
}
5252
}
53-
53+
5454
public int max() {
55-
if(root == null) {
55+
if (root == null) {
5656
return Integer.MAX_VALUE;
5757
} else {
5858
return root.max();
5959
}
6060
}
6161

62+
public void delete(int value) {
63+
root = delete(root, value);
64+
}
65+
66+
private TreeNode delete(TreeNode subTreeRoot, int value) {
67+
if (subTreeRoot == null) {
68+
return subTreeRoot;
69+
}
70+
71+
if (value < subTreeRoot.getData()) {
72+
subTreeRoot.setLeftChild(delete(subTreeRoot.getLeftChild(), value));
73+
} else if (value > subTreeRoot.getData()) {
74+
subTreeRoot.setRightChild(delete(subTreeRoot.getRightChild(), value));
75+
} else {
76+
// Cases 1 and 2 : Node to delete has 0 or 1 child
77+
if (subTreeRoot.getLeftChild() == null) {
78+
return subTreeRoot.getRightChild();
79+
} else if (subTreeRoot.getRightChild() == null) {
80+
return subTreeRoot.getLeftChild();
81+
}
82+
// Case 3 : Node to delete has 2 children
83+
84+
// Replace the value in the subTreeRoot node with the smallest value
85+
// from the right subtree
86+
subTreeRoot.setData(subTreeRoot.getRightChild().min());
87+
88+
// Delete the node that has the smallest value in the right subtree
89+
subTreeRoot.setRightChild(delete(subTreeRoot.getRightChild(), subTreeRoot.getData()));
90+
91+
}
92+
93+
return subTreeRoot;
94+
}
95+
6296
}

0 commit comments

Comments
 (0)