我需要将一个项目添加到仅给定要添加的项目的二叉树中。
这是我给出的代码:
void BinaryTree::add(Data * data) {
if (root == NULL) {
root = new BinaryTreeNode(data);
}
else {
root->add(data);
}
}
其中root
是 a 的私有变量,BinaryTree
定义为 a BinaryTreeNode
。
我需要实现一个方法:
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);
}
}
}