本篇主要针对了ADT(二叉查找树)和AVL树的基本操作进行了总结:包括:创建,删除整树,插入,删除节点,寻找最大、最小数、遍历树操作。 首先是二叉查找树: /* * 二叉查找树 利用泛型创建的二叉查找树是一个泛型类 */…
分类:树
二叉树、二叉查找树、B-、B+树
1.0二叉树 一种树结构,每个节点至多只有两个子树,且子树有左右子树之分,其次序不能随意颠倒 1.1 二叉查找树 又称二叉搜索树或二叉排序树或者B树,是最基本的查找树,是AVL树,红黑树等查找树的基础。 1.…
二叉排序树的查找、插入、删除、建立
二叉排序树的定义: (1)、如果左子树不为空,则左子树上所有关键字的值均小于根关键字的值; (2)、如果右子树不为空,则右子树上所有关键字的值均大于根关键字的值; (3)、左右子树又各是一棵二叉排序树。 一、查找 思想:…
二叉排序树和平衡二叉树
一 二叉排序树/二叉查找树(Binary Search Tree),或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所…
剑指offer 39---求二叉树的深度 && 输入一颗二叉树的根节点,判断该树是不是平衡二叉树
求二叉树的深度 思路: 分别递归左右子树,深度=左右子树中大的一个+1 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *righ…
集合框架知识系列06 HashMap和TreeMap中的红黑树
在上一节中,HashMap在jdk 1.8中用了链表和红黑树两种方式解决冲突,在TreeMap中也是用红黑树存储的。下面分析一下红黑树的结构和基本操作。 一、红黑树的特征和基本操作 上一节中已经描述了红黑树的基本概念和特…
判断一棵树是否为平衡二叉树的算法
上厕所时饶有兴致地看了下leetCode的110题,难度为easy,于是给了自己信心:判断一棵树是否为平衡二叉树。 平衡二叉树,即一棵树的左子树与右子树的深度之差不…
判断一个二叉树是否是平衡二叉树(AVL)
要求:输入一个二叉树的根节点,判断该树是不是平衡二叉树 平衡二叉树:任意一节点左右子树的高度之差的绝对值小于2 bool isAVL(BinaryTreeNode *pRoot, int &height) { i…
判断二叉查找树的三种方法
题目 实现一个函数,判断一棵二叉树是否为二叉查找树。 分析 我们知道一棵二叉查找树的中序遍历序列是有序的,所以只需求出中序遍历结果,再依次判断该序列是否有序即可。 但是上述方法需要额外线程空间保存遍历结果,在此可以省去该…
C++模板实现二叉查找树(三 深度优先遍历)
二叉树的深度优先遍历有以下三种模式: 1. 先序遍历(VLR) – 此模式为先访问父节点,再访问左节点,最后访问右节点. 2. 中序遍历(LVR) – 此模式为先访问左节点,再访问父节点,最后访问右节点. 按照中序遍历方…
通过TreeMap理解红黑树
本文以Java TreeMap为例,从源代码层面,结合详细的图解,剥茧抽丝地讲解红黑树(Red-Black tree)的插入,删除以及由此产生的调整过程。 总体介绍 Java TreeMap实现了SortedM…
一文掌握关于Java数据结构所有知识点(欢迎一起完善)
在我们学习Java的时候,很多人会面临我不知道继续学什么或者面试会问什么的尴尬情况(我本人之前就很迷茫)。所以,我决定通过这个开源平台来帮助一些有需要的人,通过下面的内容,你会掌握系统的Java学习以及面试的相关知识。本…