二叉树的前中后遍历都是以根节点为基础来说的,根节点在最先遍历就叫先序遍历。其他两个以此类推。
先序遍历:根,左,右
1,2,4,5,3
中序遍历:
4,2,5,1,3
后序遍历:
4,5,2,3,1
线索化流程
线索化二叉树:是根据先序,中序,后序遍历出来的结果来线索化二叉树的,不同的线索化方式得出的结果也不一样。
线索化方式:
1、当前节点的左子节点等于前一个节点。
2、当前节点的右子节点等于下一个节点,也就是下一次递归的当前节点的前一个节点的右子节点等于当前节点。
注意:线索化,让左右节点链接其他节点的前提是该树的左子树或者右子树的节点是空的。
线索化遍历
线索化遍历的原则就是,先确定你要使用那种遍历方式,是中序还是先序或者后序,然后再更具这几种遍历的特点,先让其到达最左或者最右,然后在想办法遍历其他的元素。
线索化遍历元素最大的优点就是可以不用再使用递归了,因为每一元素之间只有单一的顺序流程,线程一个环形链,所以可以通过迭代遍历出来整颗树。
赫夫曼树:
**权值:**每个节点的value值。
**叶子节点的带权路径:**表示从根节点到当前叶子节点的经过的线的数量乘以节点的权值。
**树的带权路径长度(WPL):**每个叶子节点的带权路径之和。
**最优二叉树:**树的带权路路径值最小的二叉树。
二叉树的存储方式有两种:
1、链式存储,需要较少的内存空间。
链式存储如果没有左右节点才会需要存储一个空节点。
2、顺序存储,需要大量的空间存储左右子树的空元素。
顺序存储方式是按照满二叉树需要的空间去存储的,即使你很多空节点也要拿空间去存储。
树:
1、双亲表示法(顺序存储):这种表示就是层次遍历,从上到下,从左到右。
一个元素两个空间,一个空间存储数据,一个空间存储父节点的下标。
2、孩子双亲表示(顺序存储加链式存储):
先从下到下,从左到右
3、孩子兄弟表示法(链式存储)