【问题标题】:Binary Tree/ Binary Search Tree二叉树/二叉搜索树
【发布时间】:2017-02-23 17:59:51
【问题描述】:

二叉树/二叉搜索树可以只有父节点和左节点或右节点之一吗?
还是强制左右节点都有?

【问题讨论】:

    标签: data-structures tree binary-search-tree


    【解决方案1】:

    二进制意味着两个。二叉树有两个子指针,不一定要引用任何东西。父引用不是必需的 - 这取决于实施。

    如果节点必须有两个子元素,那么树将是无限的,叶子将不存在。

    所以,一个节点的选项是

    • 仅限左/右孩子
    • 两个孩子

    当然,还有其他方法可以考虑“树”。例如,以binary heap array implementation 为例。

    【讨论】:

    • 我认为二叉树的定义属性是逻辑结构,而指针表示是实现细节。考虑存储为数组的完整二叉树(例如堆),或仅通过父指针形成的树。
    【解决方案2】:

    这不是强制性的,您可以根据需要创建其他类型的链接。像这样定义 updown 指针。

    对于节点 x 定义向上指针 u(x) 为:

    • 如果x是右孩子,那么u(x)x的父
    • 如果x是左孩子或根,那么u(x)x右路径的最低节点

    对于节点 x 定义下指针 d(x) 为:

    • 如果x的左子树不存在,则d(x) = x
    • 如果存在左子树,则d(x)指向x的左子树的最右边节点

    这就是所谓的树的环表示。

    【讨论】:

      【解决方案3】:

      实际上,除了一个规则之外,没有什么是强制性的(即任何二叉树节点可以拥有的最大子节点数为 两个)。

      技术上:

      当我们定义TreeNode *root = NULL 时,即使NULL 也被视为树节点。 虽然它没有实际意义,但我们确实在调用 insert、delete 和 display 方法时将它们作为参数传递。

      因此,作为编码人员,如果在处理二叉树之前未检查 root 的健全性,假设二叉树将始终包含至少一个父节点可以证明 致命

      【讨论】:

        【解决方案4】:

        二叉搜索树也是具有附加属性的二叉树。任何二叉树节点都可以有 0 个或 1 个或 2 个子节点。所以要回答你的问题,只有左节点或右节点是可以的

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-08
          • 1970-01-01
          • 2011-09-16
          • 1970-01-01
          • 2010-10-26
          • 1970-01-01
          相关资源
          最近更新 更多