zoukankan      html  css  js  c++  java
  • 树与二叉树学习

    第一块:介绍二叉树的一些基本知识

    1.1:二叉树的基本概念

     二叉树是每个结点最多有两个子树的树结构

    1.2:二叉树的五种基本形态和两种特殊形态:

    五种基本形态:

    两种特殊形态:

    1.3:二叉树的性质:

    A、在二叉树的第i层上最多有2^(i-1)个结点(i>=1)。
    B、高度为k的二叉树,最多有2^k-1个结点(k>=0)。
    C、对任何一棵二叉树,如果其叶结点有n个,度为2的非叶子结点有m个,则
    n = m + 1。------终端结点=度为二的非叶结点+1----n0=n2+1

    1.4:二叉树的存储结构—顺序存储和链式存储

    见文档:https://www.cnblogs.com/yw-ah/p/5872516.html

    第二块:介绍二叉树的递归遍历与层序遍历

    可参考博客 https://blog.csdn.net/peiyao456/article/details/52667057

     

    递归遍历:

    2.1:先序遍历 (根左右)    

    2.2:中序遍历 (左根右)

    2.3:后序遍历 (左右根)

    层序遍历:一层一层遍历

     

    第三块:介绍二叉树,树,森林之间的转换

    将树转换为二叉树:

    1. 在所有兄弟结点之间加一连线

    2. 对每个结点,除了保留与其长子的连线外,去掉该结点与其它孩子的连线。

    将一个森林转换为二叉树:

    1. 将森林中的每棵树变为二叉树
    2. 因为转换所得的二叉树的根结点的右子树均为空,故可将各二叉树的根结点视为兄弟从左至右连在一起,就形成了一棵二叉树

    二叉树转换为树

    1. 加线。若某结点X的左孩子结点存在,则将这个左孩子的右孩子结点、右孩子的右孩子结点、右孩子的右孩子的右孩子结点…,都作为结点X的孩子。将结点X与这些右孩子结点用线连接起来。
    2. 去线。删除原二叉树中所有结点与其右孩子结点的连线。二叉树转换为森林:

    二叉树转换为森林:

    假如一棵二叉树的根节点有右孩子,则这棵二叉树能够转换为森林,否则将转换为一棵树

    1.从根节点开始,若右孩子存在,则把与右孩子结点的连线删除。再查看分离后的二叉树,若其根节点的右孩子存在,则连线删除…。直到所有这些根节点与右孩子的连线都删除为止。

    2.将每棵分离后的二叉树转换为树。

    更多例题请见 https://jingyan.baidu.com/article/19020a0a743851529d28421a.html

     

    第四块:最优二叉树之哈夫曼树

    1了解基本概念,什么是哈夫曼树?

        哈夫曼树是一种带权路径长度最短的二叉树,也称为最优二叉树。

        如何构造哈夫曼树并画出其对应的哈弗慢编码是重点,要考

    1. WPL=7*2+5*2+2*2+4*2=36
    2. WPL=7*3+5*3+4*2+2*1=46
    3. WPL=4*3+2*3+5*2+7*1=35

    所以(b)的带权路劲最小,故其是最优二叉树(哈夫曼树)

    2掌握构建哈夫曼树

        见文档:https://jingyan.baidu.com/article/380abd0a717c061d90192ca2.html

    3哈夫曼编码

    利用哈夫曼树求得的用于通信的二进制编码称为哈夫曼编码。树中从根到每个叶子节点都有一条路径,对路径上的各分支约定指向左子树的分支表示"0"码,指向右子树的分支表示"1"码,取每条路径上的"0"或"1"的序列作为各个叶子节点对应的字符编码,即是哈夫曼编码。

    用二叉树设计哈夫曼前缀编码

    A:0 C:10 B:110 D:111

    第五块:线索二叉树

    见博客https://www.cnblogs.com/guweiwei/p/7090050.html

    引入二叉线索树的目的是什么:找一个节点的前驱后继的时候,比非二叉线索树强

    第六块:补充树的基本知识

    1. 树是一种重要的非线性结构,具有一对多或者多对一的关系
    2. 度:一个结点所拥有的子树的个数称为结点的度
    3. 叶子结点或者终端结点:度为0的结点
    4. 非叶子节点或分支或者非终端结点:度不为0的结点
    5. 树的度:是树内各结点度最大的值
    6. 结点数=总度数+1
    7. 树的家族谱:孩子,祖先,双亲,堂兄弟
    8. 层次,深度:最大的层次
    9. 有序树:树中结点各子树看成从左到右是有次序的
  • 相关阅读:
    maven工程下添加oracle驱动包
    面试题----入参两个Integer,无返回值,然后使这个两个值在调用函数后交换
    使用spring data solr 实现搜索关键字高亮显示
    MyBatisPlus忽略映射字段注解
    Linux下Solr单机版、集群版安装与配置
    AngularJs实现全选功能
    SpringBoot2.0整合mybatis、shiro、redis实现基于数据库权限管理系统
    springboot2.0集成shiro出现ShiroDialect报错找不到AbstractTextChildModifierAttrPr
    linux下ssh远程登录服务器入门操作
    英文邮件寻求帮助的礼貌用语
  • 原文地址:https://www.cnblogs.com/zengcongcong/p/11252613.html
Copyright © 2011-2022 走看看