我有一个(最小)左派堆,如下所示:

               1
            /     \
            8      6
          /   \   /  \
         10   12 14   16
                 /\   /
               18 20  22


我被要求显示插入21的结果。我对左派堆的理解是,插入只是单个节点的合并,在这种情况下,应该将21与每个右父进行比较,直到达到16的NULL子代为止。并应该自动放置在其中。我错了吗?它应该去别的地方吗?

最佳答案

我不知道为什么评论者如此关注节点排序。也许他们甚至不知道左派是什么?

原来的答案是,它确实成为16的右子代,但是因为6的NPL变为2,大于左树的NPL 1,所以您必须交换8和6树位置。

关于c++ - 简单的左派堆插入结果需要帮助,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19778666/

10-12 23:56