public static void main(String args[]) {
		ArrayList<ArrayList<String>> records = new ArrayList<ArrayList<String>>();
		ArrayList<ArrayList<String>> test_records = new ArrayList<ArrayList<String>>();
		BuildTree t = new BuildTree();
		 
		depth = Integer.parseInt(Config.readConfig("depth"));
		
		//Read the data in CSV file with attributes and examples
		String trainFilePath = Config.readConfig("trainFileName"); 
		records = DataLoader.readRecords(trainFilePath);
		 
		System.out.println("Number of examples : "+records.size());
		System.out.println("Lables : "+DataLoader.labels.toString());
		
		//Index of classLabel
		indexOfClassLabel = DataLoader.labels.indexOf(classLabel);
		
		TreeNode root = new TreeNode();
		
		for(ArrayList<String> record : records) {
			root.getRecords().add(record);
		}
		
		classVals = setSize(classLabel, root);
		
		//Construct Decision tree using Training set.
		t.constructTree(records, root, depth);
		
		//Assign LeafAttributes to the missed Leaf Nodes 
		assignLeaves(root);
		
		String testFilePath = Config.readConfig("testFileName");
		test_records = DataLoader.readRecords(testFilePath);
		
		//Predict for Test records
		for(int i =0 ; i<test_records.size(); i++){
			traverseTree(test_records.get(i), root);
		}
		
		System.out.println("---------------------------------");
		System.out.println("Tree for Depth "+depth+" : \n---------------------------------");
		printTree(root, 0);
		System.out.println("--------------------------------");
		
		//Print Test Report
		System.out.println("Test Report : ");
		System.out.println("======================================");
		System.out.println(count+" Correct predictions out of "+test_records.size());
		System.out.println("Correct Prediction breakdown : "+prediction.toString());
		System.out.println("======================================");
		double accuracy = ((double)count/(double)test_records.size())*100;
		System.out.println("Accuracy for Depth "+depth+" : "+accuracy+"%");
		
		
		return;
	}