nyoj202——红黑树

为了看懂这条题我还专门去看了看红黑树,结果大佬告诉我:左旋右旋不会影响中序遍历......

然后就写了个简单的中序遍历......

#include <bits/stdc++.h>
using namespace std;
const int maxn = 20;

struct node
{
    int data;
    int lchild,rchild;
}nd[maxn];

void mid_search(int k)
{
    if(k != -1){
        mid_search(nd[k].lchild);
        printf("%d\n",nd[k].data);
        mid_search(nd[k].rchild);
    }
}

int main()
{
    int t;
    cin >> t;
    while(t--){
        int n;
        cin >> n;
        memset(nd,0, sizeof(nd));
        for(int i=0;i < n;i++){
            int a,b,c;
            cin >> a >> b >> c;
            nd[a].data = a;
            nd[a].lchild = b;
            nd[a].rchild = c;
        }
        int m;
        cin >> m;
        for(int i=0;i < m;i++){
            int x,y;
            cin >> x >> y;
        }
        mid_search(0);
    }
    return 0;
}

——改日学一下红黑树的写法(FLAG)

原文地址:https://www.cnblogs.com/cunyusup/p/8954979.html

时间: 2024-10-30 07:22:50

nyoj202——红黑树的相关文章

NYOJ202 红黑树 【中序遍历】

红黑树 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 什么是红黑树呢?顾名思义,跟枣树类似,红黑树是一种叶子是黑色果子是红色的树... 当然,这个是我说的... <算法导论>上可不是这么说的: 如果一个二叉查找树满足下面的红黑性质,那么则为一个红黑树. 1)每个节点或是红的,或者是黑的. 2)每个叶子节点(NIL)是黑色的 3)如果一个节点是红色的,那么他的两个儿子都是黑的. 4)根节点是黑色的. 5)对于每个节点,从该节点到子孙节点的所有路径上包含相同数目的黑

nyoj202 红黑树

红黑树 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 什么是红黑树呢?顾名思义,跟枣树类似,红黑树是一种叶子是黑色果子是红色的树... 当然,这个是我说的... <算法导论>上可不是这么说的: 如果一个二叉查找树满足下面的红黑性质,那么则为一个红黑树. 1)每个节点或是红的,或者是黑的. 2)每个叶子节点(NIL)是黑色的 3)如果一个节点是红色的,那么他的两个儿子都是黑的. 4)根节点是黑色的. 5)对于每个节点,从该节点到子孙节点的所有路径上包含相同数目的黑

NYOJ202 红黑树 【预购】

红黑树 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描写叙述 什么是红黑树呢?顾名思义,跟枣树类似.红黑树是一种叶子是黑色果子是红色的树. .. 当然,这个是我说的. .. <算法导论>上可不是这么说的: 假设一个二叉查找树满足以下的红黑性质,那么则为一个红黑树. 1)每一个节点或是红的,或者是黑的. 2)每一个叶子节点(NIL)是黑色的 3)假设一个节点是红色的,那么他的两个儿子都是黑的. 4)根节点是黑色的. 5)对于每一个节点,从该节点到子孙节点的全部路径上包

B树、B+树、红黑树、AVL树比较

B树是为了提高磁盘或外部存储设备查找效率而产生的一种多路平衡查找树. B+树为B树的变形结构,用于大多数数据库或文件系统的存储而设计. B树相对于红黑树的区别 在大规模数据存储的时候,红黑树往往出现由于树的深度过大而造成磁盘IO读写过于频繁,进而导致效率低下的情况.为什么会出现这样的情况,我们知道要获取磁盘上数据,必须先通过磁盘移动臂移动到数据所在的柱面,然后找到指定盘面,接着旋转盘面找到数据所在的磁道,最后对数据进行读写.磁盘IO代价主要花费在查找所需的柱面上,树的深度过大会造成磁盘IO频繁读

红黑树之删除节点

红黑树之删除节点 上一篇文章中讲了如何向红黑树中添加节点,也顺便创建了一棵红黑树.今天写写怎样从红黑树中删除节点. 相比于添加节点,删除节点要复杂的多.不过我们慢慢梳理,还是能够弄明白的. 回顾一下红黑树的性质 红黑树是每个节点都带有颜色属性的二叉查找树,颜色或红色或黑色.在二叉查找树强制一般要求以外,对于任何有效的红黑树我们增加了如下的额外要求: 节点是红色或黑色. 根节点是黑色. 每个叶节点(这里的叶节点是指NULL节点,在<算法导论>中这个节点叫哨兵节点,除了颜色属性外,其他属性值都为任

数据结构与算法-红黑树

前言 红黑树是工程中最常用到的一种自平衡二叉排序树,其和AVL树类似,都是在进行插入.删除时通过一定的调整操作来维持相对稳定的树高,从而获得较好的查询性能. 性质 1. 节点是红色或黑色. 2. 根节点是黑色. 3 每个叶节点(null节点)是黑色的. 4 每个红色节点的两个子节点都是黑色.(从每个叶子到根的所有路径上不能有两个连续的红色节点) 5. 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点. 维护红黑树形状(树高)的,主要就是4.5两条性质,性质4决定了最长的路径莫过于红黑间隔

数据结构学习笔记-排序/队/栈/链/堆/查找树/红黑树

排序: 插入排序:每次从剩余数据中选取一个最小的,插入已经排序完成的序列中 合并排序:将数据分成左右两组分别排序,然后合并,对每组数据的排序递归处理. 冒泡排序:重复交换两个相邻元素,从a[1]开始向a[0]方向冒泡,然后a[2]...当a[i]无法继续往前挤的时候说明前面的更小了,而且越往前越小(挤得越往前) 堆排序:构造最大堆,每次取走根结点(自然是最大的),再调用MAX-HEAPIFY算法(见后文的堆)恢复最大堆的性质,重复取走根结点 快速排序(对A[r]-A[n]进行排序): 1.从序列

红黑树与AVL(平衡二叉树)的区别

关于红黑树和AVL树,来自网络: 1 好处 及 用途 红黑树 并不追求"完全平衡 "--它只要求部分地达到平衡要求,降低了对旋转的要求,从而提高了性能. 红黑树能够以 O(log2  n)  的时间复杂度进行搜索.插入.删除操作.此外,由于它的设计,任何不平衡都会在三次旋转之内解决.当然,还有一些更好的,但实现起来更复杂的数据结构 能够做到一步旋转之内达到平衡,但红黑树能够给我们一个比较"便宜"的解决方案.红黑树的算法时间复杂度和AVL相同,但统计性能比AVL树更高

数据结构-红黑树

转自:http://dongxicheng.org/structure/red-black-tree/ 1. 简介 红黑树是一种自平衡二叉查找树.它的统计性能要好于平衡二叉树(AVL树),因此,红黑树在很多地方都有应用.在C++ STL中,很多部分(目前包括set, multiset, map, multimap)应用了红黑树的变体(SGI STL中的红黑树有一些变化,这些修改提供了更好的性能,以及对set操作的支持).它是复杂的,但它的操作有着良好的最坏情况运行时间,并且在实践中是高效的: 它