![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二叉树
文章平均质量分 95
Dio夹心小面包
"放弃学习的我们是没有翅膀的雄鹰 不会理智的我们是根茎腐烂的大树"
展开
-
『 C++ - STL』map与set的封装 ( 万字 )
map与set分别是STL中的两种序列式容器;它们是一种树形数据结构的容器,且其的底层构造为一棵红黑树;而在上一篇文章中提到,其实红黑树本身就是一棵二叉搜索树,是基于二叉搜索树的性质对其增加了平衡的属性来提高其综合性能(包括增删查改);当然也提到了红黑树与AVL树的区别:AVL树AVL树是一棵高度平衡搜索二叉树,其特点即为在搜索二叉树的基础上根据控制结构达到了最终的属性;即为,每一个节点的左右子树的高度差不超过1;红黑树红黑树是一棵近似平衡的二叉树,其特点为根据树的颜色(红色或是黑色)原创 2024-01-20 18:37:00 · 1033 阅读 · 0 评论 -
『 C++ 』红黑树RBTree详解 ( 万字 )
AVL树AVL树采用的是利用平衡因子来控制;红黑树红黑树采用的是以颜色来判断树的结构;由上文概念中几个规则可能引出一个问题:红黑树中的新节点应该是什么颜色?黑色?红色?如果一个节点为红色,其两个孩子节点必定为黑色;对于每一个节点,从该节点到所有后代叶节点的简单路径上,都包含相同数目的黑色节点;根据这两个规则进行引入,权衡利弊可以发现新节点无论是黑色还是红色都有可能违反两条规则中的其中一条规则;但是对于两条规则的违反代价来说,新节点为黑色的代价要高于新节点为红色的代价;原创 2024-01-17 17:32:44 · 1366 阅读 · 1 评论 -
『 C++ 』AVL树详解 ( 万字 )
从上文可知,AVL树可以看作是一棵搜索二叉树,其为基于搜索二叉树在此基础上对树做了平衡的操作使其在结构上变得平衡不至于在极端情况下出现"歪脖子树"的情况;AVL树的定义与平衡搜索二叉树的结构上呈现类似;//将节点进行typedefpublic:protected:private://节点指针该篇文章中重点实现AVL树中的插入操作;原创 2024-01-15 23:00:27 · 799 阅读 · 1 评论 -
『 C++ 』BinarySearchTree搜索二叉树
二叉树顾名思义即为一个树中节点的度不大于2的有序树,是树中结构中较为简单的一种;其特点为一个节点中分为两个子树;通常可以以二叉树进行分治的思路对问题进行解决(递归或非递归);但在实际中普通二叉树由于在数据存储方面中并没有明显的特性,所以在实际中普通二叉树的应用场景并不多;BinarySearchTree二叉搜索树,顾名思义这种类型的二叉树对搜索有着比较大的优势;原创 2023-12-08 01:01:28 · 399 阅读 · 11 评论 -
【数据结构】二叉树的前中后序遍历(C语言)
二叉树] 顾名思义就是有两个分支节点的树,不仅如此,除了叶子外的所有节点都具有两个分支节点;由于结构像一棵倒立的树,顾名思义为二叉树;如下图所示,该图即为一棵野生的二叉树;既然二叉树为树,固然有着和树一样的部分(叶子、根、分支…这些也成为了树相关的概念;二叉树除了前中后序遍历以外还有一种遍历方式叫作层序遍历,可以使用队列的FIFO特性从而完成该遍历的实现;在利用递归实现解决二叉树相关问题的过程中,可以根据实际情况选择相应的遍历方式从而以效率较高的方式解决问题;原创 2023-07-13 17:07:31 · 2621 阅读 · 3 评论