Data structure and algorithms

Siper
MyTree.java

package datastructuref17.mytree; public class MyTree { class Node { int storage; Node left, right; Node(int v) { storage = v; left = right = null; } } Node root; public MyTree() { root = null; } public void addNode(int v) { root = addNode(root, v); } public Node addNode(Node n, int v) { Node nn = new Node(v); if(n == null) { n = nn; } else { if( n.storage > v ) { n.left = addNode(n.left, v); } else if (n.storage < v) { n.right = addNode(n.right, v); } } return n; } //Add a tree to the right-most leave public void addTree(MyTree n) { Node cur = root; while( cur.right != null) { cur = cur.right; } cur.right = n.root; } //binary search tree //method in iterative approach public void insertNode(int v) { Node n = new Node(v); if (root == null) { root = n; } else { Node cur = root; while(true) { if(cur.storage == v) { return; } if(cur.left == null && cur.right == null) { if( cur.storage > v ) { cur.left = n; } else { cur.right = n; } return; } if(cur.storage > v) { if( cur.left == null) { cur.left = n; return; } else { cur = cur.left; } } else { if(cur.right == null) { cur.right = n; return; } else { cur = cur.right; } } } } } //Delete the node whose value is v //Nothing will happen if no such node in the tree //remain a binary tree public void delete(int v) { root = delete(v, root); } private Node delete(int v, Node n) { if( n == null) { return n; } else { if( n.storage == v ) { if(n.left == null){ if( n.right == null) { n = null; } else { n = n.right; } } else { if( n.right == null) { n = n.left; } else { Node pre = n; Node cur = pre.right; while(cur != null && cur.left != null) { pre = cur; cur = cur.left; } n.storage = cur.storage; pre.right = cur.right; } } } else if (n.storage > v) { n.left = delete(v, n.left); } else { n.right = delete(v, n.right); } return n; } } public void print() { print(root); } public void print (Node n) { if( n == null) { return; } else { print(n.left); System.out.println(n.storage); print(n.right); } } public static void main(String[] arg) { MyTree tree = new MyTree(); tree.addNode(4); tree.addNode(2); tree.addNode(5); tree.addNode(3); tree.addNode(1); tree.delete(2); tree.print(); } }