BST に要素を追加しようとしています。私はそれを行う方法について考えていますが、私の実装は破壊的であり、元のルートは保持されません (したがって、ツリーは基本的に役に立たなくなります)。ツリーはリストに基づいており、このメソッドは再帰に基づいています。私の本当の問題は、元のルートを維持することです。ジェネリックを使用しています。
これまでのところ、私が持っているもの:
public void addElement(E elem, Node<E> root) {
elem の値でノードを作成し、それを newNode と呼びます
ケース 1: ツリーが空です
root = newNode();
return; //End of method.
それ以外の場合は、ツリーの検索を続けます (アウト ノード a の値をツリーのルートと比較します。
if (!root.hasLeft() && !root.hasRight) { //if the root in question has no children
if (elem < rootValue) { //Set the element as the left element
root.setLeft(newNode);
}
else { //Set the element as the right element.
root.setRight(newNode);
}
}
else {
if (E < root.getElem()) {
//This is where the value of our node is compared to the value of the root, which we passed in.
//(I know that we can't use the < and > operators with generics, but assume it works).
root = root.getLeft() //Left node is new root
addElement(elem, root); //Call the method again
}
else {
root = root.getRight(); //Right node is new root
addElement(elem, root) //Call method again
}
}
}
これが重複/漠然とした質問である場合はご容赦ください。これはSOに関する私の最初の投稿であり、私は一種の初心者です。