线索二叉树

✍ dations ◷ 2025-07-23 21:54:28 #

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

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

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

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

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

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

相关

  • 氧化氧化又被称为氧化作用、氧化反应。是还原剂(被氧化物)与氧化剂(被还原物)之间的氧化数升降。还原剂可借由获得氧,失去氢离子,或者失去电子的过程,使得氧化数上升。 而氧化剂可通过
  • FMN黄素单核苷酸(英语:Flavin mononucleotide,FMN)是一个由核黄素激酶自核黄素(维生素B2)产生出来的生物分子,其功能包括了NADH脱氢酶在内的多种氧化还原酶的辅基并且作为生物感蓝光蛋
  • 担架床担架床为运送伤者之救伤工具,由两支承杠支撑着一块帆布床身,承杠两端连接手柄和滑轮。一些担架床的承杠可以伸缩。床头有枕袋,可塞入柔软的物件。轮式担架也称平车、急诊推床、
  • 北方官话北方官话通常指中国北方官话变体的分类:中华民国中央研究院史语所提出的北方官话包括:民族语言网中的北方官话包括:刘勋宁提出的北方官话包括:《中国语言地图集》中,特指李荣分区
  • 南苏丹解放运动南苏丹解放运动(英语:South Sudan Liberation Movement,缩写为SSLM)是活动于南苏丹上尼罗省的武装团体。1997年4月21日时,位于南苏丹犹尼提省的努尔人部落与苏丹政府签署了和平条
  • 秦皇岛市秦皇岛市市标秦皇岛市,简称秦,旧称临榆,是中华人民共和国河北省下辖的地级市,位于河北省东北部,市境西南界唐山市,西北接承德市,东北临辽宁省朝阳市、葫芦岛市,东南滨渤海湾。地处燕
  • 新世纪资通新世纪资通股份有限公司(简称NCIC),是台湾民营电信固网公司之一,是由台湾远东集团及新加坡电信、统一企业等企业投资成立之固网公司,2001年2月14日取得固网执照并于同年开台营运
  • 何士祁何士祁,字仲景,号竹芗,浙江山阴县(今浙江绍兴市)人,清朝政治人物。道光二年(1822年)壬午恩科进士。任元和知县。道光十二年(1832年)擢任川沙厅事,创纂《川沙厅志》。咸丰元年(1851年)接替
  • 西尔维亚努斯的戒指西尔维亚努斯的戒指(英语:Ring of Silvianus)或维农的戒指(英语:Vyne Ring)是一枚4世纪的古罗马金戒指,于1785年在英国出土。现今这枚戒指被认为可能是J·R·R·托尔金小说《魔戒》
  • 坦普尔酒吧区坐标:53°20′44″N 6°15′46″W / 53.34556°N 6.26278°W / 53.34556; -6.26278坦普尔酒吧区(英语:Temple Bar,爱尔兰语:Barra an Teampaill)是爱尔兰首都都柏林市中心利菲河南