具有锯齿形的二叉树

问题描述 投票:-1回答:1

如何排列n个不同的数字序列,使得如果一次将一个数字插入二叉搜索树中,它会按照锯齿形(例如左,右,左,右)生成高度为n-1的树,…

我只需要确定序列必须具有的属性,而不是实际构建会产生序列的算法。

algorithm data-structures binary-search-tree
1个回答
0
投票

嗯,让我们举一个例子。我们插入树中的第一个值可以是任何值,因此我将选择0。

 0

现在,我们需要向左侧迈出一步的东西。那意味着我需要大于0的东西,所以我选择137。

 0
  \
  137

现在,我需要的东西将是137的左子元素。这意味着它必须在0到137之间-较小的将在零的左边,而较大的将在137的右边。因此,我将选择该范围内的某物,例如42:

  0
   \
   137
   /
  42

现在,我需要某个东西成为42的正确子代。这意味着它必须介于42和137之间。较小的任何东西都将进入42的左边(或0的左边,同样不行)或137的右边(也不行)。因此,让我们在42到137之间进行选择-例如98:

  0
   \
   137
   /
  42
   \
   98

您可能会注意到一个模式:在每个点,我们插入的值必须在最后插入的两个值之间。你知道为什么吗?基于此,您能想到一种对值0、1、2,...,n-1进行排序的方法,以便获得锯齿形图案吗?

希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.