data-structures - 什么是 Root过的树?

标签 data-structures tree binary-tree

建一棵 Root过的树是什么意思?我阅读了 here 中的定义但即使我们指定一个节点作为根,为什么树只采用下面的形状?我的意思是我可以画一棵有 4 个顶点的有根树,比下面的 4 个形状还要多?对?

enter image description here

最佳答案

我认为唯一的区别是树中的一个节点是一个特殊的起始节点。

通常,树是递归的;所有树节点本身都是树。 “有根树”只是其中子节点与特殊父节点标记不同的节点。这可能意味着算法不能递归实现,或者有一些特殊的条件来处理根节点。

我想到的例子是一棵红黑树。红黑树中的节点被标记为红色或黑色。但是有一个特殊的规则是“根节点永远是黑色的”。所以这是我们必须对根应用的特殊处理,而且只对根应用。根节点的子节点可能是红色的;这意味着根节点的第一级子节点不能被视为它们自己的红黑树中的根节点。

所以你可能会期待像这样的“区分”代码

 if(node.isRoot):
    node.Color = black

自由树可以是二叉搜索树中的任何节点;无论您选择哪个节点,查找和插入等操作始终相同。他们的算法是递归的。自由树上的算法从不包括“它是根节点”这样的问题。

关于data-structures - 什么是 Root过的树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38626886/

相关文章:

javascript - 将树数据结构保存到文本文件 JavaScript

c++ - 二叉搜索树。插入方法插入不正确

java - 插入、包含、删除和按索引获取元素的时间常数的数据结构

java - Quicksort Java 代码进入无限循环

r - 如何获得 RPART 模型中树的深度?

c++ - 创建静态哨兵节点的正确方法是什么

error-handling - 二进制搜索:please tell me whats wrong here

data-structures - 在序言中根据遍历查找二叉搜索树

java - 在java中查找n个数组之间的公共(public)元素之和

c++ - 如何在不进行类型转换的情况下从双端队列中提取?