线索二叉树的一些思考

将一棵二叉树线索化,能加快找前驱和后继的速度,这就是线索二叉树和普通二叉树相比,它最大的优势。

下面将主要讲述如何找前驱和后继、如何将二叉树线索化。

中序的前驱和后继

1)对于中序线索二叉树,它的前驱为:左子树按照中序遍历最后一个节点

2)他的后继为:右子树按照中序遍历第一个节点

如何找第一个节点和最后一个节点(中序)

1)第一个节点

一直往左走,最左边的即为第一个节点

2)最后一个节点

一直往右走,最右边的即为最后节点

对于前序和后序

1)前序的后继节点

若有左孩子,则为左孩子;若只有右孩子,则为右孩子。若为叶结点,则右链域直接指示了节点的后继。

2)后序的前驱节点

若有右孩子则为右孩子,没有有孩子只有左孩子则为左孩子。若该节点为叶结点,那它的左链域直接指示了节点的前驱。

如何将一颗二叉树线索化

设立指针pre指向刚刚访问过的节点,指针p指向正在访问的节点。pre即为p的前驱。在中序遍历中,检查p的做指针是否为空,若为空:p->left = pre;检查pre的右指针是否为空,若为空:pre->right = p;这是一个递归的过程。

    

 

posted @ 2020-04-06 21:11  wkfxm  阅读(396)  评论(0编辑  收藏  举报