Una pregunta de programación simple sobre árboles binarios en Java
Defina una clase de nodo:
Nodo de clase pública {
valor int privado;
Nodo privado leftNode;
Nodo privado rightNode;
Nodo público getRightNode() {
return rightNode;
}
public void setRightNode(Nodo rightNode ) {
this.rightNode = rightNode;
}
public int getValue() {
valor de retorno;
}
public void setValue(int value) {
this.value = value
}
Nodo público getLeftNode; () {
return leftNode;
}
public void setLeftNode(Nodo leftNode) {
this.leftNode = leftNode; /p>
}
}
Inicializar el árbol de nodos:
public void initNodeTree()
{
p>
int nodeNumber;
HashMaplt; String, Integergt; map = new HashMaplt; String, Integergt ();
p>
Lector de escáner = nuevo escáner (System.in);
número de nodo = lector.nextInt(); i = 0; i lt; número de nodo; i) {
int valor = lector.nextInt();
Cadena = lector.siguiente(); > map.put(cadena, valor) ;
}
if (map.containsKey("#")) {
int valor = map.get ("#");
nodeTree.setValue(valor);
setChildNode(mapa, valor, nodeTree);
}
preTraversal(nodeTree);
}
private void setChildNode(HashMaplt; String, Integergt; map, int nodeValue, Node parentNode) {
int value = 0;
<p> if (map.containsKey("L" nodeValue)) {
valor = map.get("L" nodeValue);
Nodo leftNode = new Node();
leftNode.setValue(valor);
parentNode.setLeftNode(leftNode);
setChildNode(mapa, valor, leftNode); }
if (map.containsKey("R" nodeValue)) {
value = map.get("R" nodeValue
Nodo rightNode =); new Node();
rightNode.setValue(valor);
parentNode.setRightNode(rightNode);
setChildNode(mapa, valor, rightNode);
}
}
Preordenar atraviesa el árbol de nodos:
public void preTraversal(Node nodeTree) {
if (nodeTree != null) {
System.out.print(nodeTree.getValue() "\t");
preTraversal(nodeTree.getLeftNode()); p>
preTraversal(nodeTree.getRightNode());
}
}