Я учусь кодировать его обход дерева двоичного дерева. До сих пор я придумал это из многих учебных пособий в сети. Однако, когда я пытаюсь сделать любой обход, я бегу в бесконечный цикл. Где я иду не так?Последовательный обход двоичного дерева
class Node {
int value;
String name;
Node lchild = null;
Node rchild = null;
Node(int key, String name) {
this.value = key;
this.name = name;
}
}
public class genTrees {
Node root;
public void addNode(int key, String s) {
Node newnode = new Node(key, s);
if (root == null) {
System.out.println("Added Root");
root = newnode;
} else {
Node focusNode = root;
Node parent;
while (true) {
parent = focusNode;
if (key <= focusNode.value) {
focusNode = focusNode.lchild;
if (focusNode == null) {
System.out.println("Added on Left" + key);
parent.lchild = newnode;
return; // All done
}
}
if (key > focusNode.value) {
focusNode = focusNode.rchild;
if (focusNode == null) {
System.out.println("Added on Right" + key);
parent.rchild = newnode;
return;
}
}
}
}
}
void inOrder(Node n) {
while (n != null) {
inOrder(n.lchild);
System.out.println(n);
inOrder(n.rchild);
}
}
Спасибо!
Я звоню ему с Treeobj.inOrder (TreeObj.root); –