在我发现的每个diagram二进制搜索树中,似乎有一些节点只有一个子节点。这些节点实际上只有一个子节点,还是有另一个未显示的空子节点。例如,14是否有一个未显示的右空子项?这将使树遍历变得更有意义。
答案 0 :(得分:2)
是的,每当没有正好有2个子节点时,对其余子节点的引用/指针将包含空值(或者无论用什么语言实现的等价值)。
因此,14将有一个空的右子女,而1,4,7和13将有左和右孩子。
我只能说一小部分语言,但你肯定需要某种“无所事事”的概念,这些概念将包含在内。
以上假设您的结构类似于:
node
node left
node right
type value
作为这种表示的替代方法(虽然我不能说我曾经见过这用于二叉树 - 只是提出了这种可能性),你也可以有一个子数组,例如 - 一个2号数组表示左右儿童,1号阵列只表示1个孩子 - 你可能有一个标志,表明它是左或右孩子(或者,因为它是BST,你可以比较它来确定它是什么),大小为0的数组意味着没有孩子。请注意,此数组不需要包含任何空值。