线索二叉树

✍ dations ◷ 2025-11-01 12:47:51 #

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

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

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

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

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

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

相关

  • 卡巴迪卡巴迪(旁遮普语:ਕਬੱਡੀ),团队体育项目,起源于南亚的印度、巴基斯坦和孟加拉,类似于中国民间游戏老鹰捉小鸡;卡巴迪从1982年亚洲运动会起成为表演项目,而1990年亚洲运动会起成为
  • 哈希姆家族哈希姆家族(阿拉伯语:هاشمي‎,转写:Hāšimī)是伊斯兰教先知穆罕默德的后裔繁衍而成的家族名称。原先附属于古莱什族部落中的一个氏族,成为巴努哈希姆(英语:Banu Hashim),近代曾
  • 森佩尔戈特弗里德·森佩尔(德语:Gottfried Semper,1803年11月29日-1879年5月15日),德国建筑师、艺术评论家。森佩尔的代表作品是其于1838年至1841年间设计建造的德累斯顿森佩尔歌剧院。1
  • 内湖乡坐标:25°04′N 121°35′E / 25.067°N 121.583°E / 25.067; 121.583内湖区位于中华民国台北市东北地区,为其十二个行政区之一。因其境内多山丘,形成多处小盆地地貌,当地人台
  • 北约东扩计划北约扩张指的是北大西洋公约组织(下称北约)自1949年成立以来增加成员国的过程,从1949年成立时的12个创始国,目前已扩张至30个成员国,其中多数是冷战后加入的东欧国家。身为冷战时
  • 米卡·什皮利亚克米卡·什皮利亚克(塞尔维亚-克罗地亚语:;塞尔维亚语:Мика Шпиљак;1916年11月28日-2007年5月18日),克罗地亚族,是南斯拉夫的党和国家领导人,南斯拉夫共产主义者联盟中央执行
  • 亚历山大·吉尔芒费利克斯-亚历山大·吉尔芒(法语:Félix-Alexandre Guilmant,1837年3月12日-1911年3月29日),法国作曲家,管风琴家。生于滨海布洛涅,1871年到巴黎担任管风琴师,后到欧美各地巡回演出。
  • 石冈水坝石冈坝是台湾经济部水利署中区水资源局所管理的拦河堰,于1977年完工营运,位在大甲溪下游,属于台中市境内,南岸属石冈区,北岸为东势区,流域面积1,061平方公里,约占大甲溪全流域面积
  • 大和村 (台中市)大和村,是台湾台中市西区民权路、向上路、公益路与英才路围成的区域,涵盖後龍里与双龍里。日治时代是日本内地人之中坚阶级住宅区,目前当地仍留存许多日式建筑,日本料理店、居酒
  • 李士实李士实(1443年-1519年),字若虚,号白洲,江西南昌府新建县人,明朝政治人物。成化初进士,累官都察院右都御史致仕。正德末年,因参与宁王之乱被处决。江西乡试第七十四名。成化二年(1466年