我只需要给要添加的项目添加一个项目到二叉树。
这是我得到的代码:
void BinaryTree::add(Data * data) {
if (root == NULL) {
root = new BinaryTreeNode(data);
}
else {
root->add(data);
}
}
其中,
root
是定义为BinaryTree
的BinaryTreeNode
的私有变量。我需要实现一个方法:
void BinaryTreeNode::add(Data * data);
BinaryTreeNode
在哪里: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);
}
}
}
最佳答案
您正在为此设置温度,然后将其与NULL比较。这绝对不能为NULL。您需要检查左侧和右侧是否为NULL。