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

admin2010-01-23  35

问题 下列各种线索二叉树中,采用二叉链表存储,遍历时仍需要栈的支持的是(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就需要栈的支持。
转载请注明原文地址:https://jikaoti.com/ti/a3a7FFFM
0

相关试题推荐
最新回复(0)