二叉树
二叉树的几个特性
- 一个二叉树第i层的最大节点数为 2^(i-1), i>=1
- 深度为k的二叉树有最大节点总数为 2^k-1, i>=1
- 对任何非空二叉树,若m表示叶节点的个数,n是度为2的非叶节点个数,则满足m=n+1
二叉搜索树
二叉搜索树是一颗二叉树,可以为空
如果不为空,满足以下性质
- 非空左子树的所有键值小于其根节点的键值
- 非空右子树的所有键值大于其根节点的键值
- 左,右子树本身也都是二叉搜索树
遍历二叉树
先序遍历
- 访问根节点
- 先序遍历左子树
- 先序遍历右子树
中序遍历
- 中序遍历左子树
- 访问根节点
- 中序遍历右子树
后序遍历
- 后序遍历左子树
- 后序遍历右子树
- 访问根节点
程序遍历
二叉搜索树的封装
- 封装二叉搜索树的构造函数
- 封装一个用于保存每一个节点的类Node
- 类中包含三个属性:节点对应的key,指向的左子树,指向的右子树
- 保存根节点
方法封装
插入节点
- 根据数据创建节点
- 判断是否为空树
- 是则将该节点赋为根节点
- 否则判断数据大小,确定寻找左节点还是右节点
- 若找到空值,则插入该节点