数据结构重读 – 线索二叉树

我们在二叉树上的先序、中序、后序遍历都是递归或者非递归完成的。

我们只能找到左、右孩子,而不能找到先、中、后序遍历序列下,元素的前驱和后继。

为此,我们可以设计线索二叉树,定义如下:

struct BiTreeThd
{
    int data;
    bool lflag, rflag;
    struct BiTreeThd* lchild, *rchild;
};

如上,多了lflag和rflag:
(1)当有左/右孩子的时候,lflag/rflag为0。此时lchild和rchild指向左孩子和右孩子。
(2)当没有左/右孩子的时候,lflag/rflag为1。此时lchild表示结点的前驱,而rchild表示结点的后继。

这里的前驱和后继,是相对于树的先、中、后序遍历而言的。

一句话:线索二叉树是为了在前、中、后序遍历时能方便找到某个结点的前驱和后继

树和 森林的遍历

To be continued.

Leave a Reply

Your email address will not be published. Required fields are marked *