【发布时间】:2017-10-09 23:21:31
【问题描述】:
我有一个按顺序遍历的 BST,所以它从 min 到 max 打印,但我也必须按字母顺序打印,我不知道如何,我尝试按顺序遍历,但它没有工作.
//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。或者将所有节点放入一个数组/列表中然后排序。
-
如果您的 BST 是由
data排序的,那么名称几乎将在树中以随机顺序排列。因此,没有树遍历可以按顺序为您提供名称。您需要收集所有名称,然后调用sort方法。
标签: java recursion data-structures binary-search-tree