数据结构之二叉树

本文介绍了树的基本概念,包括度数、树度数、叶节点、分支节点和内部节点,以及树的深度。特别讨论了二叉树的性质,如层节点数量、总节点数、叶节点与度数为2的节点的关系,以及满二叉树和完全二叉树的定义。此外,阐述了二叉树的顺序存储结构,节点编号规则,以及前序、中序和后序遍历。最后,提到了层次遍历的应用,需要借助链式队列实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1、 关于树的一些基本概念
    (1)度数:一个节点的子树的个数    
    (2)树度数:树中节点的最大度数
    (3)叶节点或终端节点: 度数为零的节点     
    (4)分支节点:度数不为零的节点     
    (5)内部节点:除根节点以外的分支节点 (去掉根和叶子)    
    (6)节点层次:  根节点的层次为1,根节点子树的根为第2层,以此类推        
    (7)树的深度或高度: 树中所有节点层次的最大值

 根节点只能有一个,可以代表整棵树

A是B和C的父节点,B和C是A的子节点

2、二叉树

每个节点最多只能有两个子节点,这种就是二叉树

二叉树性质   

(1)二叉树第k(k>=1)层上的节点最多为2的k-1次幂个节点。2^(k-l)    
(2)深度为k(k>=1)的二叉树最多有2的k次幂-1个节点。2^k - 1                                                      (3)在任意一棵二叉树中,树叶的数目比度数为2的节点的数目多一
(4)
满二叉树就是每个节点都有两个子节点,并且每一层的节点个数满足2^(树深-1)个节点,总结点树即是2^k-1个                                                                                                                                (5)完全二叉树:只有最下面两层有度数小于2的节点,且最下面一层的叶节点集中在最左边的若干位置上,最小的的完全二叉树节点个数是2^(k-1)。

                  

 二叉树的存储结构         
    ①二叉树的顺序存储结构        (数组存储)
        顺序存储结构:完全二叉树节点的编号方法是从上到下,
        从左到右,根节点为1号节点。设完全二叉树的节点数为n,
        某节点编号为i
        当i>1(不是根节点)时,有父节点,其编号为i/2;
        当2*i<=n时,有左子树,其编号为2*i ,否则没有左子树,本身是叶节点;
        当2*i+1<=n时,有右子树,其编号为2*i+1 ,否则没有右子树;            
    ②节点编号
        根节点编号 1
        根节点左子节点编号: 2   即  2 * 1
        根节点右子节点编号: 3   即  2 * 1 + 1
        第n个节点
        左子节点编号: 2 * n
        右子节点编号: 2 * n + 1
        有n个节点的完全二叉树可以用有n+1 个元素的数组进行顺序存储,
        节点号和数组下标一一对应,下标为零的元素不用。
        利用以上特性,可以从下标获得节点的逻辑关系。不完全二叉树通
        过添加虚节点构成完全二叉树,然后用数组存储,会浪费数组空间,往往这种方式并不使              用,还是会选择链式存储方式来进行存储

    ③二叉树的(深度)遍历
         前序: 根 ----> 左 -----> 右         
         中序:   左 ----> 根 -----> 右     
         后序:   左 ----> 右 -----> 根

    ④采用递归与链式存储的方式实现二叉树

这是其头文件,我们用代码来实现这些函数,val代表节点元素,left和right分别指向节点的左子树和右子树,其中层次(广度)遍历就是按照树的层数一层一层的从左向右遍历,这就需要我们学过的链式队列来辅助

 代码实现

 层次结构图解:

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值