Professional Documents
Culture Documents
int data;
BSTNode left;
BSTNode right;
BSTNode(int d ) // constructor
{ data = d; } }
classBinarySearchTree
{ publicBSTNodeinsertTree(BSTNode p, int key) // create BST {
if( p == null )
p = new BSTNode(key);
else if( key <p.data)
p.left = insertTree(p.left, key);
elsep.right = insertTree( p.right, key);
return p; // return root }
publicBSTNode search(BSTNode root, int key) {
BSTNode p = root; // initialize p with root
while( p != null )
{ if( key == p.data ) return p;
else if( key <p.data ) p = p.left;
else p = p.right; }
return null; }
publicintleafNodes(BSTNode p) {
int count = 0;
if( p != null)
{ if((p.left == null) && (p.right == null))
count = 1;
else
count = count + leafNodes(p.left)
+ leafNodes(p.right); }
return count; }
publicBSTNodedeleteTree(BSTNode root, int key) {
BSTNode p; // refer to node to be deleted
BSTNode parent = root; // refer to parent of node to be deleted
BSTNodeinorderSucc; //refer to inordersucc. of node to be deleted
if(root == null)
{ System.out.println("Tree is empty");
return null; }
p = root; // initialize p with root
/* find node being deleted & its parent */
= key)
{ parent = p;
if( key <p.data) p = p.left;
else p = p.right; }
if( p == null )
{ System.out.println("\n Node " + key + " not found for deletion");
return null; }
/* find inorder successor of the node being deleted and its parent */
if(p.left != null &&p.right != null) // case-3
{ parent = p;
inorderSucc = p.right;
while(inorderSucc.left != null) {
parent = inorderSucc;
inorderSucc = inorderSucc.left; }
p.data = inorderSucc.data;
p = inorderSucc; }
// case-2(b) {
return root; }
inorder(p.right); } }
public void preorder(BSTNode p)
{ if( p != null )
{ System.out.print(p.data + " ");
preorder(p.left);
preorder(p.right); } }
public void postorder(BSTNode p)
{ if( p != null )
{ postorder(p.left);
postorder(p.right);
bst.insertTree(root, key);
Output: