线索二叉树

✍ dations ◷ 2025-11-25 16:12:15 #

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

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

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

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

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

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

相关

  • 金融经济学金融经济学(英语:Financial economics)(有人误译为财务经济学)是经济学的分支,主要研究在不确定的环境中,如何跨越时间与空间,配置经济资源。它主要集中在研究货币资产的交易活动,
  • 区会议库里亚大会或区会议 (拉丁语:comitia curiata)为古代罗马王政时期重要的管理机构。早期,罗马人根据氏族分为30个库里亚,该群体被称为“罗马人民”。其职责包括选举高级公职人员,宣
  • 鲷鱼鲷科(学名:Sparidae)为辐鳍鱼纲鲷形目(或传统上为鲈形目鲈亚目)的一个科。本科鱼类广泛分布于全世界各大洋之热带及温带沿岸之浅水区内。少数栖息在深水区。栖息水深平均约在十米
  • 斐迪南·冯·齐柏林斐迪南·冯·齐柏林伯爵(德语:Ferdinand Graf von Zeppelin,1838年7月8日-1917年3月8日)。德国贵族、工程师和飞行员。出生于巴登大公国的康斯坦茨(现属于德国巴登-符腾堡州)他是人
  • 伊斯兰主义伊斯兰主义(阿拉伯语:الاسلامية‎)是指一种主张伊斯兰不仅仅是宗教信仰,而且是一套政治体制的意识形态。客观地描述,伊斯兰主义是一股综合了宗教、国家主义、民族主义、
  • 乌兰察布市乌兰察布市(蒙古语: ᠤᠯᠠᠭᠠᠨᠴᠠᠪᠬᠣᠲᠠ,鲍培转写:Ulaγančab qota,西里尔字母:Улаанцав хот)是中华人民共和国内蒙古自治区下辖的地级市,位于内蒙古中部。市境
  • 阐明台湾关系法及海军舰艇移转法案2014年阐明台湾关系法及海军舰艇移转法案(英语:Taiwan Relations Act Affirmation and Naval Vessel Transfer Act of 2014),或称众院第3470号法案(H.R. 3470),是允许分别销售与转
  • 费尔登茨费尔登茨(德语:Veldenz)是德国莱茵兰-普法尔茨州的一个市镇。总面积14.41平方公里,总人口900人,其中男性456人,女性444人(2011年12月31日),人口密度62人/平方公里。
  • 猿猴T淋巴病毒猿猴T淋巴病毒,也称为猿猴T细胞白血病病毒( STLV ),是与人类病毒HTLV密切相关的猿类逆转录病毒。与HTLV1至4对应,STLV也具有1至4的亚型,每种亚型都有自己的血清型 。 STLV与HTLV一
  • 米尔科·别利察米尔科·别利察(塞尔维亚语:Milko Bjelica,1984年6月4日-),黑山篮球运动员。他现在效力于土耳其球队Darüşşafaka S.K.。他也代表黑山国家男子篮球队参赛。