查找二叉树/二叉排序树
左孩子小于根
右孩子大于根
特点:
1.二叉查找树的中序遍历序列为从小到大排列的序列
2.值最小的结点无左子树,值最大的结点无右子树
3.每一层从左到右进行遍历的序列为从小到大排列的序列。
插入结点:从顶部开始找,找到合适位置放置即可。
1.若该键值结点已存在,则不再插入
2.若查找二叉树为空树,则以新结点为查找二叉树
3.要插入结点键值与插入后父结点键值比较,就能确定新结点是父结点的左子结点还是右子结点。
删除结点
1.若待删除结点是叶子结点,则直接删除
2.若删除结点只有一个子结点,则将这个子结点与待删除结点的父结点直接连接
3.若待删除的结点p有两个子结点,则在其左子树上,用中序遍历寻找关键值最大的结点s,用结点s的值代替结点p的值,然后删除结点s。
最优二叉树(哈夫漫树)
基本概念:
叶子结点的路径长度:结点到根的分支线数量
树的路径长度:所有叶子结点路径长度之和
权:叶子结点的数值
叶子结点的带权路径长度:权重*路径
树的带权路径长度:所有叶子结点带权路径之和。
高权重叶子结点离根结点距离越近,整体的带权路径长度就越小
优化叶子结点后得到的最小带权路径长度的树就叫最优二叉树,也叫哈夫曼树
如何构造哈夫曼树
假设有一组权值5,29,7,8,14,23,3,11
找出两个最小权值,构造新结点
3和5是最小的,选出来,3+5=8,将8作为新结点加入集合,把3和5去掉,然后再从新集合里选择最小的两个,最小两个构成新的和,以此类推