![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二叉树
二叉树
王胖子总叫我减肥
学习使我进步
展开
-
Java数据结构与算法------如何从顶部开始逐层打印二叉树节点数据
1 问题 给定一颗二叉树,要求逐层打印二叉树的数据,例如以下二叉树: 对这个二叉树进行层序遍历的结果为:1 ,2 ,3, 4, 5, ,6, 7 2 思路分析: 为了实现对二叉树的层序遍历,要求在遍历一个节点的同时,记录下它的孩子节点的信息,然后按照这个记录的顺序来访问节点的数据,在实现的时候可以采用队列来存储当前遍历到的节点的孩子节点,从而实现二叉树的层序遍历,遍历过程如下图所示。 如上图所示,首先...原创 2020-07-31 22:04:51 · 176 阅读 · 0 评论 -
java数据结构与算法之平衡二叉树
1.案例分析: 给定一个数列{1,2,3,4,5,6},这时创建一个二叉排序树(BST),就会存在问题:(1)此时的BST左子树全部为空,从形式上看就像一个单链表。(2)插入速度没有影响。(3)查询速度明显降低,因为需要依次比较,不能发挥BST的优势,因为每次还需要比较左子树,查询速度比单链表还要慢。 解决上述问题,就需要引入平衡二叉树。2.平衡二叉树的基本介绍 (1)平衡二叉树也叫平衡二叉搜索树,又被称为AVL树,可以保证查询的效率。 (2)它是一颗空树或...原创 2020-07-09 19:21:52 · 148 阅读 · 0 评论 -
java数据结构与算法之二叉排序树
1.二叉排序树的介绍 二叉排序树:BTS(Binary Sort Tree),对于二叉排序树的任何一个非叶子节点,要求其左节点的值比当前节点的值小,右节点的值比当前节点的值大。特别情况下:如果有相同的值,可以将节点放在左子节点或者右子节点。比如:将2插入2,二叉排序树创建和遍历 一个数组创建对应的二叉排序树,并使用中序遍历二叉排序树,比如数组Array{7,3,10,12,5,1,9},创建成对应的二叉排序树为:3.二叉排序树的删除 二叉排序树的删...原创 2020-06-30 19:00:42 · 339 阅读 · 0 评论 -
java数据结构与算法之线索化二叉树
1.线索化二叉树 将数列{1,3,6,8,10,14}构建成一颗二叉树。n+1=7. 问题分析: 1)当我们对上面的二叉树进行中序遍历时,数列为{8,3,10,1,14,16}。 2)但是6,8,10,14 这几个节点的左右指针,并没有完全的利用上。 3)如果我们希望充分的利用各个指针的左右指针,让各个节点可以指向自己的前后节点应该怎么办? 4)这时就需要 线索二叉树2.线索二叉树基本介绍 1)n个节点的二叉链表中含有n+1【公式 ...原创 2020-06-30 14:24:40 · 144 阅读 · 0 评论 -
java数据结构与算法之顺序存储二叉树
1 顺序存储二叉树的概念 从数据存储来看,数组存储方式和数的存储方式可以相互转换,即数组可以转换成树,数也可以转换成数组。2.顺序存储二叉树的特点 1)顺序二叉树通常指考虑完全二叉树。 2)第n 个元素的左子节点为2*n+1。 3)第n 个元素的左子节点为2*n+2。 4) 第n 个元素的父子节点为(n-1)/2。 5) n:表示二叉树中的第几个元素(按照0开始编号,如上图所示。)3.顺序存储二叉树的遍历 需求:给你一个数组{1,2,3,4,...原创 2020-06-28 14:51:33 · 89 阅读 · 0 评论 -
java数据结构与算法之二叉树---删除节点
1、二叉树---删除节点 1)如果删除的节点是叶子结点,则删除该节点。 2)如果删除的节点是非叶子结点,则删除该子树。2、二叉树---删除节点思路分析 1)如果数是空数root,如果只有一个root节点,则等价于将二叉树置空。 2)因为二叉树是单向的,因此我们判断当前节点的子节点是否是需要删除的节点,而不能判断当前节点是不是需要删除的节点。 3)如果当前节点的左子节点不为空,并且左子节点就是要删除的结点,就将this.left=null,并且返回(结束递归删...原创 2020-06-28 11:15:22 · 664 阅读 · 0 评论 -
java数据结构与算法之二叉树-------查找指定节点
1.二叉树-------查找指定节点 1)编写前序查找,中序查找和后序查找的方法 2)并分别用三种查找的方式,查找heroNO=5的节点3)分析各种查找方式,分别比较查找了多少次4)思路分析图解2. 代码实现package BinaryTreeDemo;public class BinaryTreeSearch { public static void main(String[] args) { //创建一颗二叉树 Binar...原创 2020-06-26 14:57:25 · 682 阅读 · 0 评论 -
java数据结构与算法之数结构------------二叉树
1.比较各种数据存储的方式1) 数组存储方式分析 优点:通过下标的方式访问元素,速度快,对于有序数组,还可以使用二分查找提高检索速度。 缺点:如果要检索每个具体的值,或者插入之(按一定的顺序)会整体移动,效率低。2)链式存储的方式分析: 优点:在一定程度上对数组的存储的方式有优化(例如:插入一个数值节点,只需要将插入节点,链接到链表中即可,删除效率也高)。 缺点:在进行检索时,效率仍然很低,(例如;要检索每个值时,需要从头开始遍历)。3)数结构...原创 2020-06-25 18:41:00 · 170 阅读 · 0 评论