线索二叉树的一些思考
将一棵二叉树线索化,能加快找前驱和后继的速度,这就是线索二叉树和普通二叉树相比,它最大的优势。 下面将主要讲述如何找前驱和后继、如何将二叉树线索化。 中序的前驱和后继 1)对于中序线索二叉树,它的前驱为:左子树按照中序遍历最后一个节点 2)他的后继为:右子树按照中序遍历第一个节点 如何找第一个节点和最后一个节点(中序) 1)第一个节点 一直往左走,最左边的即为第一个节点 2)最后一个节点 一直往右走,最右边的即为最后节点 对于前序和后序 1)前序的后继节点 若有左孩子,则为左孩子;若只有右孩子,则为右孩子。若为叶结点,则右链域直接指示了节点的后继。 2)后序的前驱节点 若有右孩子则为右孩子,没有有孩子只有左孩子则为左孩子。若该节点为叶结点,那它的左链域直接指示了节点的前驱。 如何将一颗二叉树线索化 设立指针pre指向刚刚访问过的节点,指针p指向正在访问的节点。pre即为p的前驱。在中序遍历中,检查p的做指针是否为空,若为空:p->left = pre;检查pre的右指针是否为空,若为空:pre->right = p;这是一个递归的过程。 来源: https://www.cnblogs.com/strive408/p/12648599.html