发布了一个级别订单FInd BST

时间:2015-10-27 15:17:19

标签: tree binary-tree binary-search-tree tree-traversal

给定BST的级别顺序遍历:

99 65 53 80 22 62 98 21 49 82 36 51 

如果我们从以下级别顺序遍历构建树,那将是什么树?

1 个答案:

答案 0 :(得分:1)

这是我到达BST的方式,我将在底部出现。

主要的管理规则是必须适用于BST的规则:如果你要去"命令"元素,节点左子树中的每个节点都必须被考虑"之前"在"之后,必须考虑节点和右子树中的每个节点。节点。

由于您列出了数字,并且没有更多关于排序规则的说明,因此假设只是数字排序。

因此,在放置节点时,我们必须按照以下步骤仔细查找每个节点的正确位置:

  1. 决定我们是否可以在当前级别找到它的位置(如果有更多节点的空间)。为了找到这个,如果我们不关心BST规则,我们会找到我们可以放置的所有地方。然后检查每个这样的位置,看看它是否是合法的位置。应该只有一个。
  2. 如果我们找到这样的地方,请将其放在那里,如果没有,请转到下一级并将其放在最左边的合法位置。
  3. 在现有级别放置更多节点时,我们从左向右。
  4. 所以这里是给定数字的粗糙:

    1. 第一级只包含一个数字,因此这将是99。
    2. 第二级可以包含1或2个数字,因此65必须在这里,但也许53不在。由于65小于99,它必须从99左下方放置。可以从99下方向右下方放置53个吗?不,所以它必须在第三级。
    3. 所以53在第三级,它必须从65左下。
    4. 80岁怎么样?它将位于第三级,从65开始向下,或在第四行。可以在第四行吗?它要么必须小于53,要么大于53,小于65.它大于65,所以它不能在第四级,所以它也必须在第三级,从65下降到右边。
    5. 接下来是22,它不到65,因为我们现在开始4级很容易放置,它必须从53下方放置。
    6. 接下来,62,因为它仍然在上面的水平范围内,我们只需找到适合它的地方。由于它大于53,但不大于65,因此必须从53下方放置。
    7. 98大于80.由于它仍然小于99,它仍然在这个主要的左子树中有一个位置99,所以我们将它从80下方放置。
    8. 21从22开始左下方。
    9. 49小于53,但大于22,所以它从22下方放置。
    10. 82必须从62开始左下或右下放置,从98开始,从左下或右下放置,或者开始换行。该行中唯一合法的位置是从98开始。
    11. 36大于21,但不大于49,所以它必须从21向下或从49向左下方放置。由于36也大于22,它必须从左下方49。
    12. 最终的数字51大于51,但不大于53,所以它必须放在53的左子树中的某个位置,然后我们将它从49下方放置。
    13. 最终BST:

                  99
                 /
               65
              /  \
            53    80
           /  \     \
         22    62    98
        /  \        /
      21    49    82
           /  \
         36    51