节点删除的时候可以node直接复制右子数最小节点的内容,然后删除右子数最小节点吗?然后count先加1后减1,是否可以不操作呢?

来源:5-8 二分搜索树节点的删除(Hubbard Deletion)

易水人去

2017-11-20

            // 右子树最小值(左子数最大值)
            Node *successor = new Node(minimum(node->right));
//            ++count;
            successor->left = node->left;
            successor->right = removeMin(node->right);
            delete node;
//            --count;
            return successor;

//            // 直接复制,不new and delete
//            Node *min = minimum(node->right);
//            node->key = min->key;
//            node->value = min->value;
//            node->right = removeMin(node->right);
//            return node;


写回答

1回答

liuyubobobo

2017-11-21

完全可以不操作,在这里,我只是显示地表明:new了一个新节点,count++;删除一个节点,count--:)

1
0

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11219 学习 · 1617 问题

查看课程