linux红黑树使用
来源:互联网 发布:伦理学斯宾诺莎知乎 编辑:程序博客网 时间:2024/06/02 05:42
红黑树的是在排序而叉树的基础上加了如下约束:
1:每个节点或者是黑色,或者是红色
2:根节点是黑色
3:如果一个节点是红色的,则它的子节点必须是黑色的
4:从一个节点到任一叶子所有路径上包含相同数目的黑节点
linux内核红黑树实现:
指向一颗红黑树:struct rb_root{struct rb_node *rb_node;};节点结构:struct rb_node{unsigned long rb_parent_color; //bit[0]储存颜色#defineRB_RED0#defineRB_BLACK1struct rb_node *rb_right;struct rb_node *rb_left;} __attribute__((aligned(sizeof(long))));插入一个节点,然后红黑树结构会不符合定义,需要再调用rb_insert_color;static inline void rb_link_node(struct rb_node * node, struct rb_node * parent,struct rb_node ** rb_link){node->rb_parent_color = (unsigned long )parent;node->rb_left = node->rb_right = NULL;*rb_link = node;}
红黑树的构造过程
新建一个根节点:
struct rb_node root;struct rb_root ptree;
rb_link_node(&root, NULL, &ptree.rb_node);
插入一个节点
先通过红黑的排序二叉树结构 找到新节点要插入的那个叶子节点,确定新节点的父节点
调用
rb_link_node( &node_9, &node_8, &(node_8.rb_right))
再调用rb_insert_color(&node_9, &node_root_10);
阅读全文
0 0
- linux红黑树使用
- Linux使用
- Linux使用
- Linux 使用
- linux使用
- Linux使用
- linux使用
- Linux使用
- Linux 使用
- Linux使用
- linux 使用
- Linux 使用
- linux使用
- Linux内核中的红黑树的使用
- Linux使用<一>安装Linux
- linux--ch6 使用Linux环境变量
- linux使用---1.linux使用记录
- linux使用---2.linux使用记录2
- LSTM
- Web安全 -- 前言介绍
- BP原理推导
- IO
- 1229
- linux红黑树使用
- EasyDemo*Java编程规范(link)
- Centos搭建持续集成(一)----JDK安装
- Solidworks 2015 安装教程
- 数学建模程序与算法之整数线性规划
- Java 深入学习(20) —— 访问权限控制
- Web安全 -- 信息收集(上)
- Matlab中龙格-库塔(Runge-Kutta)方法原理及实现
- 让一个图片在div中居中(四种方法)