how can i make binary search tree? i want write a code that make dictionary with binary search tree data structure.please help me?
class bnode { String key; bnode left; bnode right; bnode() { key = null; left = null; right = null; } bnode(String key) { this.key = key; left = null; right = null; } }; class BinarySearchTree { bnode root; BinarySearchTree() { root = null; } void put(String key) { bnode current = root; bnode prev = current; if (root == null) { root = new bnode(key); } else { boolean insert = false; while (insert == false) { prev = current; if (key.compareTo(current.key) < 0) { if (current.left == null) { current.left = new bnode(key); insert = true; } current = current.left; } else { if (current.right == null) { current.right = new bnode(key); insert = true; } current = current.right; } } } } boolean delete(String key) { boolean deleted = true; bnode current = root; bnode prev = current; while (current != null) { if (key.compareTo(current.key) > 0) { prev = current; current = current.right; } else if (key.compareTo(current.key) < 0) { prev = current; current = current.left; } else if (key.compareTo(current.key) == 0) { deleted = false; break; } } if (check(current) == 0) { if (current.key.compareTo(prev.key) > 0) { prev.right = null; } else { prev.left = null; } } else if (check(current) == 1) { if (current.key.compareTo(prev.key) > 0) { if (current.left != null) { prev.right = current.left; } else { prev.right = current.right; } } else { if (current.left != null) { prev.left = current.left; } else { prev.left = current.right; } } } else if (check(current) == 2) { bnode temp = inord(current); if (current == root) { root.key = temp.key; } else { if (current.key.compareTo(prev.key) > 0) { prev.right.key = temp.key; } else { prev.left.key = temp.key; } } } return deleted; } bnode inord(bnode a) { int t = 0; bnode ret, prev = new bnode(); prev = a; a = a.right; while (a.left != null) { prev = a; a = a.left; t = 1; } ret = a; if (t == 0) { prev.right = null; } else { prev.left = null; } a = null; return ret; } int check(bnode a) { int ret; if ( (a.left != null) && (a.right != null)) { ret = 2; } else if ( (a.left == null) && (a.right == null)) { ret = 0; } else { ret = 1; } return ret; } void printIn(bnode oot) { if (oot.left != null) { printIn(oot.left); } System.out.println("--------" + oot.key + "----------"); if (oot.right != null) { printIn(oot.right); } } public static void main(String[] args) { BinarySearchTree a = new BinarySearchTree(); String names[]={"A","B","C","D"}; for(int i=0;i<names.length;i++){ a.put(names[i]); } a.printIn(a.root); } }
import java.util.*; class TNode{ int number; TNode parent; TNode leftChild; TNode rightChild; } public class BinarySearchTree{ public TNode root = null; TNode currentNode = root; public boolean IsEmpty(){ if(root == null) return true; return false; } TNode create(int number){ TNode node = new TNode(); node.number = number; node.parent = null; node.leftChild = null; node.rightChild = null; return node; } public void insert(int number){ currentNode = add (root,number); if(IsEmpty() == true && currentNode != null) root = currentNode; currentNode = root; } TNode add(TNode node, int number){ if(node == null){ node = create(number); return node; } else if(number < node.number){ if(node.leftChild != null) add(node.leftChild,number); else node.leftChild = create(number); } else if(number >= node.number){ if(node.rightChild != null) add(node.rightChild,number); else node.rightChild = create(number); } return null; } public void find(int number){ IsEmpty(); currentNode = find(root, number); System.out.println("Search returned Node: " + currentNode.number); System.out.println("Node's left child: " + currentNode.leftChild); System.out.println("Node's right child: " + currentNode.rightChild); } TNode find(TNode currentNode, int number){ while(currentNode.number != number && currentNode != null){ if(number < currentNode.number){ currentNode = currentNode.leftChild; } else if(number > currentNode.number){ currentNode = currentNode.rightChild; } else{ currentNode = currentNode.rightChild; } } return currentNode; } public TNode getRoot(){ return root; } private void display(TNode input){ if(input == null){ return; } display(input.leftChild); System.out.println(input.number); display(input.rightChild); } public static void main(String[] args){ BinarySearchTree RBT = new BinarySearchTree(); Scanner console = new Scanner(System.in); System.out.println("How many numbers would you like to enter into the Red Black Tree?"); int k = console.nextInt(); int inputarray[] = new int[k]; for(int i=0; i< k; i++){ System.out.println("Please enter the " + (i+1)+ " number: "); inputarray[i]= console.nextInt(); } System.out.println("\n\n****Display Start****"); for(int i=0; i<k; i++){ RBT.insert(inputarray[i]); } RBT.display(RBT.getRoot()); } }
Ads