A-A+

下列各种线索二叉树中 采用二叉链表存储 遍历时仍需要栈的支持的是(9)。A.前序线索二叉树B

2022-08-05 21:16:55 问答库 阅读 172 次

问题详情

下列各种线索二叉树中,采用二叉链表存储,遍历时仍需要栈的支持的是(9)。
A.前序线索二叉树
B.中序线索二叉树
C.后序线索二叉树
D.前、后、中序线索二叉树请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:C
解析:易知,前、中、后序遍历二叉树的递归或者非递归算法都用到栈。遍历线索二叉树实际上就是找结点的后继。前序线索二叉树中,除前序遍历最后一个元素无后继外。任一结点的后继便为左孩子(若左子树非空)或者右孩子(若左子树为空)或者是其右线索(若该结点是叶子结点),只要顺着指针便可以方便地找到后继,显然不需要用到栈。中序线索二叉树中,除中序遍历最后一个元素无后继外,寻找任一结点的后继的过程如下:若该结点有右线索,则该右线索指示的便是后继;否则,该结点右子树最左下的结点便是后继。可以顺着该结点指向右子树的指针向下找到这个最左下的结点,不需要用栈。因此,遍历中序线索二叉树也不需要栈的支持。在后序线索二叉树中求后继要分三种情况来讨论:①若结点W是根结点,则W的后继为空;②若结点W是其双亲结点的右孩子,或者W是其双亲结点的左孩子且W的双亲没有右子树,则W的后继为其双亲结点;③若结点W是其双亲结点的左孩子且其双亲结点有右子树,则W的后继为其双亲结点右子树上按后序遍历的第一个结点。可见,在后序线索化树(以二叉链表存储)上找后继时需要知道结点双亲,这就需要栈的支持。如13-28所示,从后序遍历第一个结点E开始,顺着E的右线索可以找到E的后继D,当要找D的后继就麻烦了,因为这个时候D的两个指针都指向E,而B只有单向指向D的指针(不管用),因此要找到D的后继B就需要栈的支持。

考点:线索