二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉查找树。 后续补 ...
分类:
其他好文 时间:
2020-01-03 00:37:37
阅读次数:
65
二叉搜索数的插入、查找、删除 二叉树搜索树(即:二叉排序树,二叉查找树)二叉排序树或者是一颗空树,或者是具有下列性质的二叉树:(1)若它的左子树不空,则左子树上的所有结点的值均小于它的根结点的值。(2)若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值。(3)它的左、右子树叶分别是二叉排序 ...
分类:
其他好文 时间:
2020-01-02 22:41:45
阅读次数:
84
1. 简介 红黑树是一种自平衡二叉查找树,在查找,插入和删除几个方面,性能都可以做到O(lgN)。 那怎么实现呢,首先要先看看红黑树的5个特性,只有满足这5个特性,才是红黑树。 每个结点都有父结点(parent),左子结点(left)和右子结点(right), root的父结点是leaf结点。 下图 ...
分类:
其他好文 时间:
2020-01-02 22:39:39
阅读次数:
91
这里的函数是有返回值的,不是void型,所以需要注意的是:(在代码中已经标注) /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * ...
分类:
其他好文 时间:
2019-12-29 21:58:46
阅读次数:
76
AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。AVL树得名于它的发明者G.M. Adelson-Velsky和E.M. ...
分类:
其他好文 时间:
2019-12-27 11:36:38
阅读次数:
83
1. 二叉树的基本概念: 在计算机科学中,二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆 2.二叉树的遍历方式: # 定义节点类 class Node(): def __in ...
分类:
其他好文 时间:
2019-12-25 20:23:31
阅读次数:
84
前言 红黑树的起源,自然是二叉查找树了,这种树结构从根节点开始,左子节点小于它,右子节点大于它。每个节点都符合这个特性,所以易于查找,是一种很好的数据结构。但是它有一个问题,就是容易偏向某一侧,这样就像一个链表结构了,失去了树结构的优点,查找时间会变坏。 所以我们都希望树结构都是矮矮胖胖的,像这样: ...
分类:
其他好文 时间:
2019-12-23 00:59:01
阅读次数:
123
一,b树 b树(balance tree)和b+树应用在数据库索引,可以认为是m叉的多路平衡查找树,但是从理论上讲,二叉树查找速度和比较次数都是最小的,为什么不用二叉树呢? 因为我们要考虑磁盘IO的影响,它相对于内存来说是很慢的。数据库索引是存储在磁盘上的,当数据量大时,就不能把整个索引全部加载到内 ...
分类:
其他好文 时间:
2019-12-16 19:16:47
阅读次数:
52
二叉树(Binary Search Trees)
二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(Left Subtree)和“右子树”(Right Subtree)。二叉树常被用于实现二叉查找树和二叉堆。
分类:
数据库 时间:
2019-12-11 21:23:51
阅读次数:
88