numpy array
pycharm
tree structure:
class BTree
{
data:
	struct Value value;
	struct Edgelist edges[2];
	struct BTreelist subtrees[2];
method:
	split_node(){}
	build_error(){}
	best_edge(){}
	create_tree(){}
	
}

struct Value
{
	list dataset;
	double error;
}

struct Edge
{
	int	feature_index;
	double	threshold;
}

best_edge(value)
{
	take a copy of value;	
	for each feature
		sort value by feature
		for each threshold in the feature
			compute information gain
		end for
	end for
	
	return {feature,threshold, min_error} with the max information gain	
}
//record the level in each node, then contral the height of the nodes
create_tree(root,level)
{
	if value.error == 0 
		return root;
	root.level > level return root; 	
	//{edge,min_error} = best_edge(value)
	//if root.value.error <= min_error
		return root;

	subtree[0]= split_node(root,edge, left)
	subtree[1] = split_node(root,edge, right)		
	
	create_tree(subtree[0])
	create_tree(subtree[1])
	return root			 
}