摘要: 假如有个数列{1,2,3,4,5,6} 创建一个二叉排序树 1)左子树全部为空,更像一个单链表 2)插入速度没有影响 3)查询速度明显降低(因为需要依次比较),不能发挥BST的优势,因为每次还需要比较左子树,其查询速度比单链表还慢 4)解决方案—平衡二叉树(AVL) 平衡二叉树: 1)平衡二叉树又叫 阅读全文
posted @ 2022-04-02 22:55 doremi429 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 二叉(查找)排序树(BST):对于二叉排序树的任何一个非叶子节点要求左子节点的值比当前节点的值小,右子节点的值比当前节点的值大 特别说明:若有相同的值,可将该节点放在左子节点或右子节点,尽量避免相同值出现 1 public class BinarySortTreeDemo { 2 public st 阅读全文
posted @ 2022-04-02 21:33 doremi429 阅读(53) 评论(0) 推荐(0) 编辑
摘要: 二叉树—删除节点 1)删除节点是叶子节点,删除该节点 2)删除节点是非叶子节点,则删除该子树 思路: 1、考虑若树是空树root,如果只有一个root节点,则等价将二叉树置空 2、因二叉树是单向的,所以判断当前节点的子节点是否需要删除,而不能判断当前这个节点是不是需要删除节点 3、如果当前节点的左子 阅读全文
posted @ 2022-04-02 20:44 doremi429 阅读(1131) 评论(0) 推荐(0) 编辑
摘要: 前序查找: 1.先判断当前节点的no是否等于要查找的 2.若相等,则返回当前节点 3.若不等,则判断当前节点的左子节点是否为空,若不为空,则递归前序查找 4.若左递归前序查找,找到节点,则返回,否继续判断。当前节点的右子节点是否为空,若不为空,则继续向右递归前序查找 中序查找: 1.判断当前节点的左 阅读全文
posted @ 2022-04-02 18:25 doremi429 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 二叉树 前序遍历:先输出父节点,再遍历左子树和右子树 中序遍历:先输出左子树,再遍历父节点,最后为右子树 后序遍历:先输出左子树,再遍历右子树,最后为父节点 小结:看输出父节点的顺序,就确定是前序还是中序后序 遍历步骤: 1、创建一个二叉树 2、前序遍历: 2.1 先输出当前节点(根节点) 2.2 阅读全文
posted @ 2022-04-02 16:40 doremi429 阅读(461) 评论(0) 推荐(0) 编辑
摘要: 二叉树 1)数组存储方式分析: 优点:通过下标访问元素,速度快。对于有序数组还可以使用二分查找提高检索速度 缺点:检索具体某个值,或插入值会整体移动,效率较低 2)链表存储方式分析: 优点:一定程度上对数组存储方式有优化,插入结点和删除结点效率好 缺点,进行检索时,效率低,需要从头结点开始遍历 3) 阅读全文
posted @ 2022-04-02 15:02 doremi429 阅读(29) 评论(0) 推荐(0) 编辑
摘要: 哈希表是一种数据结构,不是算法 一个需求:新员工报道,将该员工的信息加入(id,性别,年龄,。。。)输入该员工的id时,要求找到该员工的所有信息 要求:不使用数据库,尽量节省内存,速度越快越好 ————哈希表(散列) 一级缓存,或者还有有二级缓存 1 import java.util.Hashtab 阅读全文
posted @ 2022-04-02 14:17 doremi429 阅读(36) 评论(0) 推荐(0) 编辑