线索二叉树

✍ dations ◷ 2025-11-15 14:57:50 #

在计算机科学中,二叉树添加了直接指向节点的前驱和后继的指针的二叉树称为线索二叉树。

线索二叉树(引线二叉树) 的定义如下:

“一个二叉树通过如下的方法“穿起来”:所有原本为空的右(孩子)指针改为指向该节点在中序序列中的后继,所有原本为空的左(孩子)指针改为指向该节点的中序序列的前驱。”

线索二叉树能线性地遍历二叉树,从而比递归的 中序遍历更快。使用线索二叉树也能够方便的找到一个节点的父节点,这比显式地使用父亲节点指针或者栈效率更高。这在栈空间有限,或者无法使用存储父节点的栈时很有作用(对于通过深度优先搜索来查找父节点而言)。考虑这样的例子:一个节点有一个右孩子,那么的左指针可能是指向一个孩子节点,或是一个指回的线索。如果有左孩子,这个左孩子同样也应该有一个左孩子或是指回的线索。对于所有的左孩子同理。因此沿着这些从发出的左指针,我们最终会找到一个指回的线索。这种特性是对称的:当是的左孩子时,我们可以沿着的右孩子找到一个指回的线索。

传统的二叉树一般都是以链式存储的结构来表示。这样,二叉树中的每个节点都可以用链表中的一个链节点来存储,每个链节点就包含了若干个指针。但是,这种传统的链式存储结构只能表现出二叉树中节点之间的父子关系,而且不能利用空余的指针来直接得到某个节点的在特定的遍历顺序(先序,中序,后序)中的直接前驱和直接后继。通过分析传统的二叉树链式存储结构表示的二叉树中,存在大量的空闲指针。若能利用这些空指针域来存放指向该节点的直接前驱或是直接后继的指针,则可以进行某些更方便的运算。这些被重新利用起来的空指针就被称为线索,加上了这些线索的二叉树就是线索二叉树。

对二叉树以某种遍历顺序进行扫描并为每个节点添加线索的过程称为二叉树的线索化,进行线索化的目的是为了加快查找二叉树中某节点的前驱和后继的速度。那么在有N个节点的二叉树中需要利用N+1个空指针添加线索。这是因为在N个节点的二叉树中,每个节点有2个指针,所以一共有2N个指针,除了根节点以外每一个节点都有一个指针从它的父节点指向它,所以一共使用了N-1个指针。所以剩下2N-(N-1)个空指针。

相关

  • 米格尔·巴塞洛米格尔·巴塞洛·阿蒂格(西班牙语:Miquel Barceló Artigues,1957年-),西班牙画家,出身于马略卡费拉尼奇。1970年到巴黎的游历使他认识了涩艺术,对他早期发布的作品有很强的影响。是
  • 大公主岛坐标:52°55′N 128°50′W / 52.917°N 128.833°W / 52.917; -128.833大公主岛是加拿大的岛屿,位于太平洋海域,由卑斯省负责管辖,长83.2公里,宽45.1公里,面积2,251平方公里,最高
  • 大青岛海战大青岛海战发生于2009年11月10日,为朝鲜人民军海军与大韩民国海军在大青岛的军事冲突。11时27分上午左右,一艘朝鲜的海军巡逻艇越过三八线,韩国海军的小船警告三次无效。其中一
  • 弦 (几何)弦是一个几何术语,也是一个图论概念。在几何学中,若一线段的两个端点都在曲线上,则该线段称作该曲线的弦。圆的任何弦的垂直平分线都会通过圆心。弦不可以指直角三角形上的斜边
  • 欧拉力在经典力学,欧拉加速度(以莱昂哈德·欧拉的名字命名)是在非均匀旋转的参照系中分析运动时出现的加速度。本文仅限于旋转轴固定的参考系。欧拉力是一个物体受的假想力,与欧拉加速
  • 维新会维新会(越南语:Duy Tân hội/.mw-parser-output .han-nom{font-family:"Nom Na Tong","Han-Nom Gothic","Han-Nom Ming","HAN NOM A","HAN NOM B","Ming-Lt-HKSCS-UNI-H","Min
  • 宣信宣信(Albert Benjamin Simpson,1843年12月15日-1919年10月29日),加拿大籍牧师、神学家、作家及作曲家;亦是基督教宣道会(Christian and Missionary Alliance, 简称 C&MA 或 Allian
  • 卡乌皮斯-赫伊基卡乌皮斯-赫伊基(芬兰语:Kauppis-Heikki),本名为赫伊基·卡乌皮宁(芬兰语:Heikki Kauppinen,1862年6月7日-1920年9月3日)是一位多产的芬兰作家和小学教师。卡乌皮斯-赫伊基在年轻的时
  • 汪晖事件汪晖事件(或称“汪晖抄袭事件”、“汪晖涉嫌抄袭事件”、“汪晖门”、“汪晖抄袭门”),是指2010年中国大陆学者汪晖涉及抄袭问题所引发的学界、媒体以及网络上的争论。2010年3
  • 西格蒙德·拉舍尔纳粹集中营转移营比利时:布伦东克堡垒 · 梅赫伦转移营法国:居尔集中营 · 德朗西集中营意大利:波尔查诺转移营荷兰:阿默斯福特集中营 · 韦斯特博克转移营挪威:法斯塔德集中营部