我只需要给要添加的项目添加一个项目到二叉树。

这是我得到的代码:

void BinaryTree::add(Data * data) {
    if (root == NULL) {
        root = new BinaryTreeNode(data);
    }
    else {
        root->add(data);
    }
}


其中,root是定义为BinaryTreeBinaryTreeNode的私有变量。

我需要实现一个方法:

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。

10-04 19:45