摘要: 二叉排序树的删除情况比较复杂,有以下三种情况需要考虑 删除叶子节点(比如:2,5,9,12) 删除只有一棵子树的节点(比如1) 删除有两棵子树的节点(比如:7,3,10) 操作思路分析 第一种情况:删除叶子节点 思路: 需要先找到待删除的节点 targetNode 找到targetNode的父节点 阅读全文
posted @ 2020-10-27 21:17 刘指导 阅读(690) 评论(0) 推荐(0) 编辑
摘要: 一个数组创建成对应的二叉排序树,并使用中序遍历二叉排序树,比如:数组为Array(7,3,10,12,5,1,9),创建成对应的二叉排序树为 public class BinarySortTreeDemo { public static void main(String[] args) { int[ 阅读全文
posted @ 2020-10-27 20:07 刘指导 阅读(326) 评论(0) 推荐(0) 编辑
摘要: 先看一个需求 给你一个数列{7, 3, 10, 12, 5, 1, 9},要求能够高效的完成对数据的查询和添加 解决方案 使用数组 数组未排序 优点:直接在数组尾添加,速度快. 缺点:查找速度慢 数组排序 优点:可以使用二分查找,查找速度块 缺点:为了保证数组有序,在添加新数据时,找到插入位置后,后 阅读全文
posted @ 2020-10-27 20:03 刘指导 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 基本介绍 给定n个权值作为n个叶子节点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,这样的二叉树为最优二叉树,也称为赫夫曼树 赫夫曼树是带权路径长度最短的数,权值较大的节点离根较近 赫夫曼树几个重要概念 1.路径和路径长度:在一棵树中,从一个节点往下可以达到的孩子或孙子节点之间的通路,称 阅读全文
posted @ 2020-10-27 17:52 刘指导 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 堆排序基本介绍 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它是不稳定排序 堆是具有以下性质的完全二叉树:每个节点的值都大于或等于其左右孩子节点的值,称为大顶堆,注意:没有要求节点的左孩子的值和右孩子的值的大小关系 每个节 阅读全文
posted @ 2020-10-27 16:23 刘指导 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 二叉树图解 ###二叉树的前序遍历 前序遍历:先输出父节点,再遍历左子树和右子树 //前序遍历 根左右 public void preSearch() { System.out.println(this); if (this.left != null) { this.left.preSearch() 阅读全文
posted @ 2020-10-27 15:40 刘指导 阅读(71) 评论(0) 推荐(0) 编辑