【发布时间】:2017-02-23 17:59:51
【问题描述】:
二叉树/二叉搜索树可以只有父节点和左节点或右节点之一吗?
还是强制左右节点都有?
【问题讨论】:
标签: data-structures tree binary-search-tree
二叉树/二叉搜索树可以只有父节点和左节点或右节点之一吗?
还是强制左右节点都有?
【问题讨论】:
标签: data-structures tree binary-search-tree
二进制意味着两个。二叉树有两个子指针,不一定要引用任何东西。父引用不是必需的 - 这取决于实施。
如果节点必须有两个子元素,那么树将是无限的,叶子将不存在。
所以,一个节点的选项是
当然,还有其他方法可以考虑“树”。例如,以binary heap array implementation 为例。
【讨论】:
这不是强制性的,您可以根据需要创建其他类型的链接。像这样定义 up 和 down 指针。
对于节点 x 定义向上指针 u(x) 为:
对于节点 x 定义下指针 d(x) 为:
这就是所谓的树的环表示。
【讨论】:
实际上,除了一个规则之外,没有什么是强制性的(即任何二叉树节点可以拥有的最大子节点数为 两个)。
技术上:
当我们定义TreeNode *root = NULL 时,即使NULL 也被视为树节点。
虽然它没有实际意义,但我们确实在调用 insert、delete 和 display 方法时将它们作为参数传递。
因此,作为编码人员,如果在处理二叉树之前未检查 root 的健全性,假设二叉树将始终包含至少一个父节点可以证明 致命。
【讨论】:
二叉搜索树也是具有附加属性的二叉树。任何二叉树节点都可以有 0 个或 1 个或 2 个子节点。所以要回答你的问题,只有左节点或右节点是可以的
【讨论】: