追加するアイテムのみを指定して、バイナリ ツリーにアイテムを追加する必要があります。
これが私が与えられたコードです:
void BinaryTree::add(Data * data) {
if (root == NULL) {
root = new BinaryTreeNode(data);
}
else {
root->add(data);
}
}
ここで、は aとして定義されたroota のプライベート変数です。BinaryTreeBinaryTreeNode
メソッドを実装する必要があります。
void BinaryTreeNode::add(Data * data);
aBinaryTreeNodeは次のとおりです。
class BinaryTreeNode {
public:
Data * nodeData;
BinaryTreeNode * left;
BinaryTreeNode * right;
/**
* Constructor
*/
BinaryTreeNode(
Data * data,
BinaryTreeNode * left = NULL,
BinaryTreeNode *right = NULL
)
: nodeData(data), left(left), right(right)
{ }
// ...
これを再帰的に行いたいのですが、追加するデータのみを渡す場合の方法については確信が持てません。
うまくいかない私の考えは次のとおりです。
void BinaryTreeNode::add(Data * newData) {
BinaryTreeNode * temp = this;
if (temp == NULL) {
temp->nodeData = newData;
} else {
if (newData->compareTo(nodeData) < 0) {
temp->left->add(newData);
} else {
temp->right->add(newData);
}
}
}