39-算法打卡-二叉树-基础知识-第三十九天
1 二叉树基础知识分类
2 二叉树种类
2.1 满二叉树
如果一颗二叉树只有度为0的节点和度为2的结点,并且度为0的结点在同一层上,这棵二叉树就称之为满二叉树。
2.2 完全二叉树
完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层(h从1开始),则该层包含 1~ 2^(h-1) 个节点。
优先级队列:其实就是一个堆,堆就是一颗完全二叉树,同时保证了父子节点的顺序关系。
2.3 二叉搜索树
二叉搜索树是有数值的,二叉搜索树是一个有序树。
1、若它的左子树不为空,则左子树上所有结点的值均小于它的根节点的值
2、若它的右子树不为空,则右子树上所有结点的值均大于它的根节点的值
3、它的左右子树分别为二叉排序树
2.4 平衡搜索树
平衡二叉搜索树:又被称为AVL(Adelson-Velsky and Landis)树,且具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
3 存储方式
3.1 链式存储
链式存储就是使用指针的方式存储,链式存储是通过指针把分布在各个地址的节点串联起来
3.2 顺序存储
顺序存储是使用数组的方式存储,顺序存储的元素内存是连续分布的。
其实就将树按层序遍历,存储到数组中。
4 遍历
二叉树主要有两种遍历方式:
深度优先:先往深处走,遇到叶子节点再往回走。
广度优先:一层一层的去遍历。
深度优先一般使用递归、迭代法遍历,广度优先基本上是使用迭代法遍历
注:栈其实就是递归的一种实现结构,前中后序遍历的逻辑其实都是可以借助栈实现递归的方式来实现的;
广度优先遍历实现一般使用队列方式实现,这也是队列先进先出的特点所决定的,因为需要先进先出的结构,才能一层一层的来遍历二叉树。
4.1 深度优先
前序遍历:中左右
中序遍历:左中右
后序遍历:左右中
总结:前、中、后其实指的是中间节点的遍历顺序
4.2 广度优先
层序遍历:一层一层的遍历完
5 总结
二叉树是一种基础的数据结构,需要重点掌握,是算法面试中的常客,也是众多数据结构的基础。