常用数据结构--二叉树

本文介绍了二叉树的基本概念,包括满二叉树、完全二叉树及非完全二叉树等类型,阐述了前序、中序、后序及层次遍历的方法,并探讨了二叉树的重要性质。

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

二叉树并不是一种特殊的树,是一种独立的数据结构。下面是一些关于二叉树入门级的、纯理论的东东,高手请Alt+F4,千万别往下翻,会影响您的心情!

二叉树的分类

满二叉树:除最后一层无任何子节点外,每一层上的所有结点都有两个子结点。

完全二叉树:除了最下面一层,其他层结点都是饱满的,并且最下层上的结点都集中在该层最左边的若干位置上。(满二叉树也是完全二叉树)

非完全二叉树:既不是满二叉树,也非完全二叉树。

例:


图1

二叉树的遍历

前序遍历(先根遍历):根左右。

后序遍历(后根遍历):左右根。

中序遍历(中根遍历):左跟右。

层次遍历:一层一层自左向右。

例:


图2

图中前序遍历结果是: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;

树和二叉树的转换

将树的孩子结点转成二叉树的左子结点,树的兄弟结点转成二叉树的右子结点。

例:


图3

二叉树的一些重要特性

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

    例:

        以图1为例:任一图中第2层,最多只能有2个结点。验证正确!

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

    例:

        以图1为例:图中所有二叉树深度为3,因此,该些二叉树最多有2^3 -1 = 7个结点,验证正确!

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

    例:

        以图1为例:看最后一个非完全二叉树,图中所示,叶子结点n0 = 2;度为2的结点n2 = 1(结点2);则2 = 1 + 1。验证正确!

4、如果对一颗有n个结点的完全二叉树的结点按层序编号(从第1层到⌊log2n⌋ + 1层,每层从左到右),则对任一结点i(1<=i<=n),(⌋向下取整符号) 有:

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

例:

        以图1左侧的完全二叉树为例:若i = 3,则i > 1,⌊3/2⌋ = 1,3的根结点为1。验证正确!

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

例:

        以图1左侧的完全二叉树为例:若i = 3,因 n = 5,则2i>n,由此推出3为叶子结点若i = 2,因 n = 5,则2i<n,由此推出2的左子结点为4。验证正确!

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

例:

        以图1左侧的完全二叉树为例:上一条否命题求出了左子树结点,而这条正好求出了右子树结点。结点i=2的右子树结点为5,验证正确!

*************************************接下来写几个特殊的二叉树及其性质***********************************************

查找二叉树(二叉排序树)

最优二叉树(哈夫曼树)

线索二叉树

平衡二叉树

评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值