数据结构 第六章树和二叉树

本文详细介绍了二叉树的基本概念、性质、存储结构以及二叉树的前、中、后序遍历方法。特别强调了哈夫曼树的构造方法和哈夫曼编码的构建过程,同时也涵盖了森林与二叉树之间的转化以及树的遍历算法。此外,还提供了若干习题以加深理解。
摘要由CSDN通过智能技术生成

第六章 树和二叉树

画图、编程
二叉树、哈夫曼树、最小生成树

知识点
  1. 掌握二叉树的基本概念、性质和存储结构

    1. 二叉树的定义

      • 二叉树(Binary Tree)是n(n≥0)个结点所构成的集合,它或为空树(n = 0),或为非空树,对于非空树T:

        • 有且仅有一个称之为根的结点;

        • 除根结点以外的其余结点分为两个互不相交的子集T1和T2,分别称为T的左子树和右子树,且T1和T2本身又都是二叉树。

    2. 二叉树的基本特点

    • 结点的度小于等于2

    • 有序树(子树有序,不能颠倒)

    1. 二叉树的性质
    • 性质1: 在二叉树的第i层上至多有2^(i-1)个结点

    • 性质2: 深度为k的二叉树至多有2^(k)-1个结点

    • 性质3: 对于任何一棵二叉树,若2度的结点数有n2个,则叶子数n0必定为n2+1 (即n0=n2+1)

    • 性质4: 具有n个结点的完全二叉树的深度必为[log2n]+1

    • 性质5: 对完全二叉树,若从上至下、从左至右编号,则编号为i 的结点,其左孩子编号必为2i,其右孩子编号必为2i+1;其双亲的编号必为i/2。

    1. 二叉树的的存储结构

      1. 顺序存储

      按满二叉树的结点层次编号,依次存放二叉树中的数据元素。
      特点:
      结点间关系蕴含在其存储位置中
      浪费空间,适于存满二叉树和完全二叉树

      1. 链式存储
      typedef struct BiNode{
             
      TElemType   data;
      struct  BiNode   *lchild,*rchild; //左右孩子指针
      }BiNode,*BiTree; 
      
      
  2. 熟练掌握二叉树的前、中、后序遍历方法

    Status PreOrderTraverse(BiTree T){
         
    if(T==NULL) return OK; //空二叉树
    else{
             
        cout<<T->data; //访问根结点
        PreOrderTraverse(T
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值