2

我正在学习堆,我无法理解你应该如何移动每个节点。我将在下面给你一个示例树:

          1
      /      \
     2        3
   /  \      /  \
  4    5    6    7
 / \   /
8   9 10  

这就是我的树。我试图让 10 到节点,但不明白我采取的步骤。我会先看看树的底部吗?这是我的尝试:

          1
      /      \
     2        3
   /  \      /  \
  4    5    6    7
 / \   /
8   9 10 


 -> Move ten up and the two down. 

          1      
      /      \
    10        3
   /  \      /  \
  4    5    6    7
 / \   /
8   9 2 

-> Move the 9 up 

         1      
      /      \
    10        3
   /  \      /  \
  9    5    6    7
 / \   /
8   4 2 

-> move the 7 up

          1      
      /      \
    10        7
   /  \      /  \
  9    5    6    3
 / \   /
8   4 2

-> Move the whole left side up and bring the 1 down.

         10      
      /      \
    9         7
   /  \      /  \
  8    5    6    3
 / \   /
1   4 2

这就是我最终得到的结果,但我觉得这是不对的,因为它不是一棵有序的树。有人可以帮助我了解我哪里出错了吗?

4

1 回答 1

2

堆不是有序的二叉树。堆保留的唯一顺序是任何子节点小于(或等于)它的父节点。树的同一级别的子节点可以按任何相对顺序排列。

于 2013-11-05T10:01:42.630 回答