线索二叉树

✍ dations ◷ 2025-11-28 05:14:06 #

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

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

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

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

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

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

相关

  • 克朗克朗是一个货币单位,使用这一单位的国家和地区有捷克、丹麦(包括法罗群岛)、冰岛、挪威和瑞典。斯洛伐克和爱沙尼亚等国也曾使用过这一货币单位。“克朗”一次源于拉丁词语“co
  • 三民家商高雄市立三民高级家事商业职业学校(英语:Kaohsiung Municipal Sanmin Vocational High School Of Home Economics & Commerce),简称三民家商,位于高雄市左营区。三民家商周边有
  • 净化政策除垢法案,(净化政策,英语:lustration),指纯化或洁净之意思。高度政治性政策,用于苏联解体后中、东欧国家转型正义时期,清除过往苏联残余旧势力的政策。
  • 原子核物理学原子核物理学(简称核物理学,核物理或核子物理)是研究原子核成分和相互作用的物理学领域。它主要有三大领域:研究各类亚原子粒子与它们之间的关系、分类与分析原子核的结构并带动
  • 机动战士高达外传 宇宙、闪光的尽头… 《机动战士高达外传 宇宙、闪光的尽头…》(日语:機動戦士ガンダム外伝 宇宙、閃光の果てに…)是高达游戏系列作品中以游戏形式推出高达外传的第三作,原本是
  • 2012年大马士革之战 巴沙尔·阿萨德政府2,500-5,000人(战役开始时)大马士革之战(The Battle of Damascus,或 Operation Damascus Volcano)开始于2012年7月15日,是叙利亚内战的一部分。一些报道称有数
  • 闵安琪闵安琪(1957年1月14日-),华裔女作家,在二十七岁来到美国的时候,基本上不会说英语。而现在她已经成为一名成功的英语畅销书作家。她的作品中有很多经历奇特、性格鲜明的女性形象,比
  • 迪斯科湾迪斯科湾(丹麦语:Diskobugten)是格陵兰西岸的一个水域,今天它主要是一个北极度假地。最早到达迪斯科湾的欧洲人是红发埃里克带领的纳维亚人。986年红发埃里克在格陵兰西岸建立了
  • 太平猴魁太平猴魁是产于安徽黄山区(古称太平县)的一种绿茶,名列中国十大绿茶之列。太平猴魁是中国地理标志产品。属绿茶类的尖茶,被誉为中国的“尖茶之冠”。猴魁尖茶的外形奇特,特点是叶
  • CROSSANGE 天使与龙的轮舞角色列表CROSSANGE 天使与龙的轮舞角色列表为日本动画《CROSSANGE 天使与龙的轮舞》及其外传登场的角色。