public void printTree(TreeNode node) {
		if(node == null) return;
		//for root we have all data with out any division
		if(node.parent != null) {
			for(int i = 0; i < node.depth - 1; i++)
				System.out.print("| ");
			System.out.print("attr" + "" + node.parent.selectedAttribute + " = " + node.selectedAttributeValue + " : ");
		}
		//procedure further if it has children. We are performing DFS on this tree.
		if(node.children != null) {
			//do not print a line for root
			if(node.parent != null)
				System.out.println();
			for(TreeNode t : node.children) 
				printTree(t);
		}
		else 
			System.out.println(node.value);
	}