树和二叉树

1.树的度:所有结点的度当中,度数最大的。
叶子结点:度为0的结点
分支结点:除了叶子节点以外,都是分支结点。
内部结点:除了叶子节点,和根节点以外所有的结点。
总结点为 N,总度数为K ,则 N = K +12
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.二叉树的遍历
前序(先根)遍历: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.树和二叉树的转换
(1)树转换为二叉树
约定树中每一个结点的孩子结点按从左到右的次序编号,即把树作为有序树看待。
思想:
对于树中的任一结点,将其第一个孩子结点作为转化的二叉树的左孩子结点,将其右兄弟结点作为转化的
二叉树右孩子结点。
方法:
树中所有相邻兄弟之间加一条连线
对树中的每个结点,只保留其与第一个孩子结点之间的连线,删去其与其他孩子结点之间的连线。
以树的根节点为轴心,将整棵树顺时针旋转一定的角度,使之结构层次分明。
注意:
经过转化所构成的二叉树是唯一的。
由树转化而成的二叉树,其根节点必然没有右孩子。
(2)森林转换为二叉树
方法:
将森林中的每棵树转换成相应的二叉树
第一棵二叉树不动,从第二棵二叉树开始,依次把后一棵二叉树的根结点作为前一棵二叉树根结点的右孩子,
当所有二叉树连在一起后,所得到的二叉树就是有森林转换得到的二叉树。
注意:
有森林转换而得到的二叉树,其根结点必定有右孩子。
(3)二叉树还原为树或森林
方法:若某结点是其双亲的左孩子,则把该结点的右孩子、右孩子的右孩子…都与该结点的双亲结点用线连起来
删除原二叉树中所有双亲结点与右孩子结点的连线

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值