数据结构与算法—二叉排序树(java)
前言 前面介绍学习的大多是线性表相关的内容,把指针搞懂后其实也没有什么难度。规则相对是简单的。 再数据结构中 树 、 图 才是数据结构标志性产物,(线性表大多都现成api可以使用),因为树的 难度相比线性表大一些 并且树的 拓展性很强 ,你所知道的树、二叉树、二叉排序树,AVL树,线索二叉树、红黑树、B数、线段树等等高级数据结构。然而二叉排序树是所有的基础,所以彻底搞懂二叉排序树也是非常重要的。 树 参考王道数据结构 二叉树也是树的一种,而二叉排序树又是二叉树的一种。 树是 递归 的,将树的任何一个节点以及节点下的节点都能组合成一个 新的树 。并且很多操作基于递归完成。 根节点: 最上面的那个节点(root),根节点 没有前驱节点 ,只有子节点(0个或多个都可以) 层数: 一般认为根节点是 第1层 (有的也说第0层)。而树的高度就是层数最高(上图层数开始为1)节点的层数 节点关系: 父节点 :就是链接该节点的上一层节点, 孩子节点: 和父节点对应,上下关系。而 祖先节点 是父节点的父节点(或者祖先)节点。 兄弟节点: 拥有同一个父节点的节点们! 度: 节点的度就是节点拥有 孩子节点 的个数(是孩子不是子孙).而树的度(最大)节点的度。同时,如果度大于0就成为 分支节点 ,度等于0就成为 叶子节点 (没有子孙)。 相关性质: 树的节点数=所有节点度数+1. 度为m的树第i层最多有mi