》》》》》》》》》》》》》》》》》》》》》》》》》》直奔主题《》《》《》《》《》《》《》《》《》《》《》《》《》《
相关定义
1、度:结点拥有的子树成为结点的度,(简单的说就是看有几条出来的线)各结点度的最大值成为树的度(也就是最多出来的线)
2、结点的层次从根开始定义起根为第一层,根的孩子为第二层。根中结点的最大层次称为树的深度或高度(也就是树有几层)
3、树的存储结构:双亲表示法(简单来说就是一个链表存储上每个结点的下标、data、parent,有时还可以加上左孩子或者是右孩子(parent,孩子位置储存的是相应结点的下标值)),孩子表示法(),孩子兄弟表示法
二叉树的存储结构:二叉链表(左孩子 data 右孩子)
二叉树(不多说)/
4、满二叉树:在一颗二叉树中所有分支结点都存在左字树和右子树,并且所有叶子都在同一层上。(简单的说就是一棵n层的树有(2^n)-1个节点)
5、完全二叉树:个人理解就是树的节点按照根左右的次序依次排排满一层排下一排不能出现跳排,也就是说一个节点不可能存在有右子树但没左字树的情况,也不可能存在叶子节点相差层数为2的情况。
二叉树的相关性质:
1、在二叉树的第i层上最多存在2^(i-1)个结点
2、深度为K的二叉树最多有(2^k)-1个结点
3、对于任何一颗二叉树如果其叶子结点数为n0,度为2的结点数为n2,则n0=n2+1
4、具有n个节点的完全二叉树的深度为(log2n)+1(下取整3.5按3算)
5、对于一课有n个结点的完全二叉树的结点按层序编号对任一结点i有
如果i=1为根;如果i>1,则其双亲结点为i/2
如果2i>n则无左孩子;否则其左孩子为2i。同理如果2i+1>n则无右孩子否则右孩子为2i+1
二叉树的遍历
前序遍历:根左右 中序遍历:左根右 后序遍历:左右根
简单推导:由前序遍历(第一个)或后序遍历(最后一个)确定根。再确定其他顺序。但是注意:有前序遍历和中序遍历可以确定一棵树。有中序遍历和后序遍历也可确定一棵树,但与前序遍历和后序遍历不能确定一棵树
数。森林二叉树的转换
树转换为二叉树;
1,加线,在所有兄弟结点间加一条连线
2.去线,每个结点只保留它与第一个孩子(兄弟结点(左孩子))的连线,去掉其他的连线。
3旋转,层次调整,注意孩子关系。
森林转换为二叉树
1将每棵树转换为二叉树
2连线,将每棵树的根节点连接起来
3旋转调整