c++ - 如何在 C++ 中实现一个 avl 树,每个节点都是另一个 avl 树
问题描述
我有一个 input.txt 文件,其中包含这样的数字:input.txt 文件
我正在尝试制作一个 avl 树,其中每个节点都是来自第一列的数字,并且每个节点都指向另一个包含来自第二列的数字的 avl 树。有人可以解释如何在 C++ 中实现这一点吗?
解决方案
像使用整数节点一样实现它:
struct AVL_node
{
bool color;
int key;
AVL_Tree value;
AVL_Node * left_subtree;
AVL_Node * right_subtree;
};
在树中,您需要将键、值和链接字段分开。关键是您用于订购节点的内容。价值就是数据。
值没有区别。它可能是std::vector
或std::map
丢失。一般不会复制节点,只会更改链接。但是,如果复制节点,则键和值字段都将被复制。
请记住,在组织节点时,只有链接字段会发生变化。密钥用于确定排序。
推荐阅读
- android - 如何忽略触摸事件,让安卓系统处理?
- android - BottomAppBar 忽略“layout_gravity”,始终显示在顶部
- python - 允许来自我的 zappa 应用程序的“ObjectCreated”事件通知
- javascript - 如何重写此 JavaScript 行以便于阅读?(三元运算符)
- ios - 当尝试从统一构建一个 Xcode 项目到我的 iPhone 时,它给了我这个错误 Apple Mach-O Linker (Id) Error
- oracle - 是否可以创建触发器以将表的数据插入到 Oracle 中的另一个表中?
- php - PHP/HTML 中的语法错误 - 解析错误
- python - Python:多处理输出问题
- c++ - 为什么有时需要将 c++ 模板函数定义放在头文件中?
- mysql - mysql 在另一个流行值查询的结果中找到一个流行值