二叉树插入功能

时间:2012-12-10 08:34:01

标签: c++ binary-search-tree

这不起作用,这看起来对你们好吗? 我认为逻辑是正确的,但我可能完全错了

有人有什么想法吗?

这只是插入函数,它只适用于整数

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;
            }
        }
    }        
}

2 个答案:

答案 0 :(得分:1)

以下内容看起来很可疑:

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

第一个travtmp吗?

答案 1 :(得分:0)

while (true) {


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

正好在while条件下,trav-&gt; val与trav-&gt; val进行比较。 我想这不是意图。