![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
HUZCC
Hello World!
展开
-
红黑树
红黑树说难不难,说简单不简单,我去看别人写的红黑树教学,是真的看不懂,于是自己想办法,实现了。 红黑树性质: 性质1. 节点是红色或黑色。 性质2. 根节点是黑色。 性质3 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点) 性质4. 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。 插入: 插入的节点是红色节点,当插入节点的父亲节点是...原创 2020-01-08 16:12:31 · 514 阅读 · 0 评论 -
Treap树
Treap是真的简单。 为了打破类似单调数列插入BST, 使树退化为链表的情况, 将数据打乱成随机出现的,是个好办法, 然而并不是什么时候都适用。 树上节点的出现顺序是不可修改的, 而Treap则为每个节点新增加一个随机变量, 将矛盾转移到这个随机变量上, 使得对节点进行比较的时候,具有随机性, 从而使得插入,删除等操作的复杂度期望为O(logn)。 Treap性质: ...原创 2020-01-07 23:33:40 · 195 阅读 · 0 评论 -
AVL树
最古老的平衡二叉树。 AVL树性质: 1.左右子树高度差不超过1. 复杂度: 插入O(logn),最多做两次旋转,若干次维护树高。 删除O(logn),最坏情况做logn次平衡。 旋转操作 插入: 与BST一样,小于当前节点往左子树,大于往有子树。回溯时平衡树高。 删除: 递归查找到目标值的节点, 1.如果目标节点是单链节点(只有一个儿子),或没有儿子的节点,则就地删除,用空...原创 2020-01-07 23:06:05 · 342 阅读 · 0 评论 -
探究C/C++宏定义的算法原理
在OJ开发学习的过程中,需要考虑一个代码文件长度的问题,那么能不能用宏定义来大幅度的增加预处理之后的代码长度呢? 一. 第一次实验: #include<stdio.h> #define a bb #define b cc int main() { int a; return 0; } 为什么不是这样呢: 变量a -> bb -> cccc 执行...原创 2019-09-25 21:33:05 · 319 阅读 · 0 评论