这是行不通的,对你们来说看起来合适吗?
我认为逻辑是对的,但我可能完全错了

有人有想法么?

这只是insert函数,仅适用于int

void BST::Insert(int valueToInsert) {

    if (root == NULL) {
        root = new Node();
        root->val = valueToInsert;
        root->parent = NULL;
        root->left = NULL;
        root->right = NULL;

    } else {
        Node* tmp = new Node();
        tmp->val=valueToInsert;
        Node* trav = root;
        tmp->left=NULL;
        tmp->right=NULL;

        while (true) {
            if((trav->val)>(trav->val)) {
                if (trav->right == NULL) {
                    trav->right = tmp;
                    tmp->parent = trav;
                    tmp->right = NULL;
                    tmp->left = NULL;
                    break;
                } else {
                    trav = trav->right;
                    continue;
            }
        }

        if ((tmp->val)<(trav->val)) {
            if (trav->left == NULL) {
                trav->left = tmp;
                tmp->parent = trav;
                break;
            }else {
                trav = trav->left;
                continue;
            }
        }
    }
}

最佳答案

以下内容可疑:

           if((trav->val)>(trav->val)) {
               ^^^^        ^^^^


第一个trav是不是tmp

09-30 14:02
查看更多