class BinarySearchTree {
private:
class Node {
public:
Node *left;
Node *right;
int info;
Node() {
left = right = nullptr;
}
~Node() {}
};
Node *root;
BinarySearchTree() {
root = nullptr;
}
Node *GetNode() {
return root;
}
};
实际上,树本身更高。不能写递归插入和删除。做了一个迭代版本。这里有一个问题的递归。
void Insert(Node *node, int info) {
if (node == nullptr) {
node = new Node();
node->info = info;
} else {
if (info > root->info) {
Insert(root->right, info);
} else if (info < root->info) {
Insert(root->right, info);
};
}
}
树用法示例:
BinarySearchTree tree = new BinarySearchTree();
tree->Insert(tree->GetNode(), 10);
但是root总是指向NULL。
问题可能是您从不更改
root类变量BinarySearchTree。这可以通过例如传递给函数的insert不是指向树顶部的Node *node指针 ( ) 而是指针 ( ) 的引用来解决Node *&node。