考虑以下二叉树的嵌套表示: (XYZ) 表示 Y 和 Z 分别是节点 X 的左子应力和右子应力。请注意,Y 和 Z 可能为 NULL,或者进一步嵌套。以下哪项代表有效的二叉树?
(A) (1 2 (4 5 6 7))
(B) (1 (2 3 4) 5 6) 7)
(C) (1 (2 3 4)(5 6 7))
(D) (1 (2 3 NULL) (4 5))答案: (C)
说明:要解决这个问题,我们必须看两件事:
1) 在二叉树中,一个节点最多可以有 2 个孩子。
2)要从上面给定的序列构造二叉树,最里面的括号应该先工作。
在选项 A 中:( 4 5 6 7 ) 在那里,它说节点 4 有三个孩子,这对于二叉树来说是错误的,而且在这个问题中,只定义了 ( XYZ ),即节点 X 可以有最多 2 个孩子,这将是子树 Y 和 Z 的根。
在选项 B 中:在处理最内层 (2 3 4) 之后,其中 2 是二叉树的节点,3 是节点 2 的左子树,4 是节点 2 的右子树。由此我们得到 (1 2 5 6) .这里 2 来自子树的根 ( 2 3 4 )。现在我们再次没有对 ( 1 2 5 6) 的任何定义。因此无效。
在选项 C 中:在处理 ( 2 3 4 ) 和 ( 5 6 7 ) 之后我们得到 ( 1 2 5 ) 其中 2 来自子树的根 ( 2 3 4 ) 并且 5 来自子树的根 ( 5 6 7)。现在,在 ( 1 2 5 ) 节点 1 是二叉树的根,根为 2 的子树是左子树,根为 5 的子树是根节点 1 处的右子树。因此它给出了有效的二叉树。
在选项D中:它被给出为(2 3 NULL),这里N,U,L和L被给出为不同的元素,这又是错误的,因为根据(XYZ)定义,一个节点最多可以有2个孩子。
这个问题的测验