我有一個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