考虑以下二叉树的嵌套表示:(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空)(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个子节点。
这个问题的测验