线索二叉树

✍ dations ◷ 2025-08-13 19:07:05 #

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

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

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

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

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

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

相关

  • 印度斯坦语印度斯坦语(हिन्दुस्तानी,ہندوستانی‬)又称印地—乌尔都语,是语言学家对印度斯坦(即南亚北部)的印地语、乌尔都语及其相应方言的统称。这些语种的语法基本相
  • 希腊经济奇迹希腊经济奇迹是希腊在1950年至1973年间,经济与社会的快速发展。当时经济增长每年平均7%,只排在当时世界上发展最快的日本之后 。1950年代希腊经济增长不亚于现今“老虎经济”,
  • 伏尔加河流域伏尔加河(俄语:Волга,又译窝瓦河),位于俄罗斯西南部,全长3,692公里,是欧洲最长的河流,也是世界最长的内流河,流入里海。伏尔加河是欧洲流域最广以及流量最大的河流,流经欧洲俄罗
  • 司法行政学院司法行政学院,是中华人民共和国司法部直属的成人高等学校,司法行政系统唯一培训领导干部和高层次法律服务人才的培训基地。
  • VanillawareVanillaware有限公司(日语:ヴァニラウェア有限会社)是日本的电脑游戏开发公司。公司地址在大阪市中央区。2002年2月8日设立。Vanillaware主要制作原创的中世纪西欧风幻想世界为
  • 京沈客运专线.mw-parser-output .RMbox{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2)}.mw-parser-output .RMinline{float:none
  • 全球暖化在北極的影響全球暖化在北极的影响包括温度上升、 海冰消失和格陵兰冰原的融化。 在该地区潜在的甲烷释出(尤其是永久冻土和甲烷水合物) 亦值得关注。由于北极对全球暖化的放大反应,这经
  • 烤甘蔗烤甘蔗,台湾道地小吃,早年盛行;直到1990年以后渐近少见,偶尔仍见于产甘蔗农村地区,贩商推著烤甘蔗二轮板车兜售。通常板车上架设半拱有一洞口铁筒烤炉,成束甘蔗堆置在烤炉里烤,烤熟
  • 拼六棋拼六棋(Six),是德国人Steffen Mühlhäuser在1995年推出的两人棋类游戏,部分类似拼五棋。
  • 陈遵毅陈遵毅,江西庐陵(今江西吉安)人,明朝政治人物。同进士出身。成化五年(1469年)己丑科进士,弘治元年(1488年)接替索雄任嘉定县知县一职,1490年由白质接任。