二叉树
1. 二叉树
1.1二叉树的概述
树中度小于等于2的树就称为二叉树
1.2基本概念
- 根结点(root): 没有父结点,只有子节点的结点称之为根结点
- 父结点: 一个结点有上一级的关系,则称这个结点上一级的结点为该结点的父结点
- 左子结点:一个结点的下级左边的结点称为左子结点
- 右子结点:一个结点的下级右边的结点称为有子结点
- 左子树:一个结点下级左边的所有结点,称为该结点的左子树
- 右子树:一个结点下级右边的所有结点,称为该结点的右自子树
- 结点的度:结点有多少个分支结点度就为多少,(Ps:二叉树的度最多为2)
- 树的高度:树一共有多少层,则树的高度就是多少
2.二叉查找树
又称:二叉排序树或二叉搜索树
2.1数据存储的特点
- 任意一个结点的左子树中的结点都比当前结点小
- 任意一个结点的右子树中的结点都比当前结点大
2.2 二叉查找树的出现原因
- 为了折中数组和链表的特性:
树的查询效率优于链表,树的增删效率低于链表
树的增删效率优于数组,树的查询效率低于数组
2.3 二叉查找树代码实现
核心代码
//进行插入位置寻找
while (true){
//用3结点与指针curr比较
int result = threeNode.ele - curr.ele;
//判断结果
if (result > 0){
//如果位置不为空,则指针右移
if (curr.right != null){
curr = curr.right;
}else{
//如果位置为空,则将3结点放入
curr.right = threeNode;
break;
}
}else if (result < 0