1.树的基本概念:
树的度:所有结点的度当中,度数最大的。
叶子结点:度为0的结点
分支结点:除了叶子节点以外,都是分支结点。
内部结点:除了叶子节点,和根节点以外所有的结点。
总结点为 N,总度数为K ,则 N = K +1
2.树的遍历
遍历混乱的时候,可以假设空结点位置为 null ,也走一下
前序(先根)遍历:1--2--6--7--3--4--8--9--10
后序(后根)遍历:5--6--7--2--3--9--10--8--4--1
层次遍历:1--2--3--4--5--6--7--8--9--10
3.二叉树的一些概念和特性
二叉树并不是一种特殊的树,而是一种独立的一种数据结构。
满二叉树:所有结点都是充实的,没有空缺的结点。
完全二叉树:假设该二叉树为K层,则(K-1)层为满,且叶子结点,全部集中在左侧。
非完全二叉树:即普通二叉树
二叉树的重要特性:
1.在二叉树的第K层上,最多有2的K-1次方(K>=1)
2.深度为K的二叉树,最多有2的K次方减1个结点(K>=1)
3.对于任何一棵二叉树,如果其叶子结点的个数为K,度为2的结点数为M,则K=M+1
4.如果对于一棵有N个结点的完全二叉树的结点按层次进行编号(如上图,从第一层到第 (log 2n 向下取整),每层从左到右),对任意结点 i (1<i<n),有:
如果i=1,则结点i无父结点,是二叉树的根,如果i>1,则父结点为 i/2 向下取整
如果2i>n,则结点i为叶子结点,无左子结点,否则,其左子结点为2i
如果2i+1>n,则结点i无右子结点,否则,其右子结点是结点2i+1
例:一个具有767个结点的完全二叉树,其叶子结点的个数为 (384)
解题:假设度为0的结点数为n0,度为1的结点数为n1,度为2的结点数为n2 ,
则n0+n1+n2=767,
768=2*n0+n1,度为1的个数为 0 或 1 ,
所以个数为384
4.二叉树的遍历
前序(先根)遍历:1--2--4--5--7--8--3--6
中序(中根)遍历:4--2--7--8--5--1--3--6
后序(后根)遍历:4--8--7--5--2--6--3--1
层次遍历:1--2--3--4--5--6--7--8
5.树和二叉树的转换
取最左侧子结点为左子结点,兄弟结点转为右子结点
转换完成之后,先序遍历不变