【问题标题】:Prove that this assumption doesn't work for all binary search trees证明这个假设不适用于所有二叉搜索树
【发布时间】:2016-12-05 21:06:19
【问题描述】:

(二叉搜索树是一棵二叉树,每个节点最多可以有2个孩子,右边比节点大,左边比节点小。)

我有一个想反驳的理论。它说对于任何二叉树,如果我们采用搜索路径(称为 S)到叶节点,那么 S 的 LEFT 上的任何节点都必须小于 S 上的任何节点,并且 RIGHT 的任何节点都必须是比 S 上的任何节点都大。换句话说:左边的节点

For example if we have this tree:

节点 K 的搜索路径是 M->F->H->K

左边的节点集包含C、A、D、G

右边的集合包含V,S,P,T,X,W

什么是好的反例?

谢谢。

【问题讨论】:

  • 你对“右”和“左”有一个奇怪的定义。C, A, D, G肯定在M->F-H->K左边
  • M->F-H->K(搜索路径)左侧的任何节点都属于“左”集。右边的任何东西都属于“正确”的集合。
  • 所以“右边的节点集包含C、A、D、G”是不正确的,是吗?
  • 是的。我很抱歉。我的意思是“左”。
  • 无论如何,反例:M->F->C->AD 节点位于行的右侧,但不大于 MF

标签: binary-tree binary-search-tree


【解决方案1】:

这不是一个真正的答案,但它不适合评论......

我认为你对“二叉搜索树”的定义有点欠缺——毕竟这符合你的定义:

   B
    \
     C
    / \
   A   D

但是,这不是真正的二叉搜索树 - 您的定义缺少递归关系。在二叉搜索树中,节点左子树中的所有元素都小于节点标签,而右子树中的所有元素都大于节点标签 - 不仅仅是直接子节点。

也许有一个更精确的定义会帮助你思考你的“理论”。

【讨论】:

  • 如果我不清楚,我很抱歉,但这是行不通的。我们先插入 B,然后插入 C,但是当我们插入 A 时,它应该留给 B。所以我们总是从根开始,然后递归地往下走。再次抱歉。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-24
  • 1970-01-01
  • 1970-01-01
  • 2021-10-01
  • 2023-03-08
相关资源
最近更新 更多