public BHeapNode mergeRootNodes(BHeapNode b1 , BHeapNode b2){
		BHeapNode b = null;
		BHeapNode root = null;
		
		// Case 1 b1 is null
		if(b1 == null)
			return b2;
		
		//Case 2 b1 is null
		else if(b2 == null)
			return b1;
		
		// Case 3 atleast one of b1 or b2 is not null
		/*
		 * Logic :  Start from the head pointers of both the trees. Select the tree having the least degree from both the root list.
		 * 			Add this tree to the new heap. Move the pointer to the next tree in the root list.
		 * 			Continue this process till the end of the root list is reached.
		 */
		while(b1 != null || b2!= null){
			if(b1 == null){			
				b.sibling = b2;				
				break;
			}
			else if(b2 == null){
				b.sibling = b1;				
				break;
			}

			if(b1.degree <= b2.degree){
				if(b==null){
					b = b1;
					root = b;
				}else{
					b.sibling = b1;
					b = b.sibling;
				}
				b1 = b1.sibling;
				b.sibling = null;
			}else{
				if(b==null){
					b = b2;
					root = b;
				}else{
					b.sibling = b2;
					b = b.sibling;
				}
				b2 = b2.sibling;
				b.sibling = null;
			}			
		}

		return root;
	}