我有一个BST是按顺序遍历的,所以它打印从最小到最大,但我也必须按字母顺序打印它,我不知道如何,我尝试按顺序遍历,但它没有工作。如何按字母顺序打印BST?
//Method to insert values to BST
ABBNodo insertar(ABBNodo raiz, int data, String nombre, double salario){
if(raiz==null){
raiz=new ABBNodo(data, nombre, salario);
raiz.setData(data);
raiz.setNombre(nombre);
raiz.setIzq(null); raiz.setDer(null);
}else{
if(data<raiz.getData()) raiz.setIzq(insertar(raiz.getIzq(),data, nombre, salario));
else if(data>raiz.getData()) raiz.setDer(insertar(raiz.getDer(),data, nombre, salario));
}
return raiz;
}
//Recursive method for in-order traversal
void inOrden(ABBNodo raiz){
if(raiz!=null){
inOrden(raiz.getIzq());
System.out.println(raiz.getData()+" "+raiz.getNombre());
inOrden(raiz.getDer());
}
}
按字母顺序创建另一个BST。或者将所有节点放入一个数组/列表中,然后对其进行排序。 – Andreas
如果您的BST按'data'排序,那么这些名称将在树中随机排列。所以没有遍历树会按顺序给你命名。你需要收集所有的名字,然后调用'sort'方法。 – ajb