二分探索木の助けが必要です。ノードと BST クラスは次のとおりです。
public class Node {
private int key;
private Node parent;
private Node leftChild;
private Node rightChild;
public Node(int key, Node leftChild, Node rightChild) {
this.setKey(key);
this.setLeftChild(leftChild);
this.setRightChild(rightChild);
}
public void setKey(int key) {
this.key = key;
}
public int getKey() {
return key;
}
public void setParent(Node parent) {
this.parent = parent;
}
public Node getParent() {
return parent;
}
public void setLeftChild(Node leftChild) {
this.leftChild = leftChild;
}
public Node getLeftChild() {
return leftChild;
}
public void setRightChild(Node rightChild) {
this.rightChild = rightChild;
}
public Node getRightChild() {
return rightChild;
}
}
public class BinarySearchTree {
private Node root;
public void insert(int key) {
insert(new Node(key, null, null));
}
public void insert(Node z) {
Node y = null;
Node x = root;
while (x != null) {
y = x;
if (z.getKey() < x.getKey()) {
x = x.getLeftChild();
} else {
x = x.getRightChild();
}
}
z.setParent(y);
if (y == null) {
root = z;
} else if (z.getKey() < y.getKey()) {
y.setLeftChild(z);
} else {
y.setRightChild(z);
}
}
public void preorderTraversal() {
preorderTraversal(root);
}
public void preorderTraversal(Node node) {
if (node != null) {
System.out.print(node.getKey() + " ");
preorderTraversal(node.getLeftChild());
preorderTraversal(node.getRightChild());
}
}
public void inorderTraversal() {
inorderTraversal(root);
}
private void inorderTraversal(Node node) {
if (node != null) {
inorderTraversal(node.getLeftChild());
System.out.print(node.getKey() + " ");
inorderTraversal(node.getRightChild());
}
}
public void postorderTraversal() {
postorderTraversal(root);
}
private void postorderTraversal(Node node) {
if (node != null) {
postorderTraversal(node.getLeftChild());
postorderTraversal(node.getRightChild());
System.out.print(node.getKey() + " ");
}
}
}
( http://www.brilliantsheep.com/java-implementation-of-binary-search-tree-insert-and-traversal-methods/から取得) これは比較的単純な実装です。ただし、各ノードに追加情報を保存する必要があります。ノードには、選挙の候補者と候補者の投票数が含まれている必要があります。この割り当て (および BST を使用しなければならない理由) については多くの不満がありましたが、それには立ち入らないでください。
候補に 1 ~ 20 の番号を付け、これをバイナリ検索ツリーのキーとして使用しています。私の質問は、このコード (またはわずかに変更されたバージョン) を使用して、キーを指定して特定のノード情報を更新するにはどうすればよいですか?
例えば。その人が候補者 4) に投票した場合、候補者 4 の投票情報を更新するにはどうすればよいですか?
いくつかの検索メソッドを見てきましたが、どのノードで呼び出す必要があるのか わかりません。
どんな助けでも大歓迎です。