树与二叉树

树与二叉树的特性:

(1)树的概念:

双亲、孩子和兄弟:结点的子树的根称为该结点的孩子;相应地,该结点称为其子结点的双亲。具有相同双亲的结点互为兄弟

结点的度:一个结点的子树的个数记为该结点的度

叶子节点:也称为终端结点,指度为0的结点

内部结点:指度不为0的结点称为分支节点或非终端节点。除根结点之外,分支结点也称为内部结点

结点的层次:根为第一层,根的孩子为第二层,依次类推,若某节点在第i层,则其孩子结点在第i+1层

树的高度:一颗树的最大层次数记为树的高度(深度)

(2)二叉树的重要特性:

1、在二叉树的第i层上最多有2i-1个结点(i≥1);

2、深度为k的二叉树最多有2k -1个结点(k≥1);

3、对任何一棵二叉树,如果其叶子结点数为n0,度为2的结点数为n2,则n0=n2+1。

4、如果对一棵有n个结点的完全二叉树的结点按层序编号(从第1层到

L log2n˩+1层,每层从左到右),则对任一结点i(1≤i≤n),有:

如果i=1,则结点i无父结点,是二叉树的根;如果i>1,则父结点是L i/2 ˩;

如果2i>n,则结点i为叶子结点,无左子结点;否则,其左子结点是结点2i;

如果2i+1>n,则结点i无右子叶点,否则,其右子结点是结点2i+1。

特殊的树

二叉树:二叉树是每个结点最多有两个孩子的有序数,可以为空树,可以只有一个结点。

满二叉树:任何结点,或者是树叶,或者恰有两棵非空子树。

完全二叉树:最多只有最小面的两层结点的度可以小于2,并且最下面一层的结点全都集中在该层左侧的若干位置。

平衡二叉树:树中任一结点的左右子树高度之差不超过1。

查找二叉树:又称之为排序二叉树。任一结点的权值,大于其左孩子结点,小于其右孩子结点。

线索二叉树:在每个结点中增加两个指针域来存放遍历时得到的前驱和后继信息。

最优二叉树:又称为哈弗曼树,它是一类带权路径长度最短的树。

路径是从树中一个结点到另一个结点之间的通路,路径上的分支数目称为路径长度。

树的路径长度是从树根到每一个叶子之间的路径长度之和。结点的带权路径长度为从该结点到树根之间的路径长度与该结点权值的乘积。

树的带权路径长度为树中所有叶子结点的带权路径长度之和。

哈弗曼树的构造:

(1)根据给定的权值集合,找出最小的两个权值,构造一棵子树最为其孩子结点,二者权值之和作为根结点;

(2)在原集合中删除这两个结点的权值,并引入根节点的权值;

(3)重复步骤(1)和步骤(2),直到原权值集合为空。

哈夫曼编码:根据哈夫曼树进行边长编码,编码长度与路径长度相关,左侧分支编码为0(或1),右侧分支编码为1(或0),从根结点到对应叶子结点所有路径分支上右侧分支编码为1(或0),从根结点到对应叶子结点所有路径分支上的编码记录下来,即为该叶子结点的编码。

树的遍历操作:遍历是按某种策略访问树中的每个结点,且仅访问一次的过程。

前序遍历:又称为先序遍历,按根à左à右的顺序进行遍历。

后序遍历:按左->右->根的顺序进行遍历。

中序遍历:按左->根->右的顺序进行遍历。

层次遍历:按层次顺序进行遍历。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

flysh05

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值