二叉树、二叉树排序树的实现及遍历

本文介绍了二叉树的基本概念,包括二叉树的定义、性质,以及满二叉树和完全二叉树。接着详细讲解了二叉树的前序、中序、后序遍历和层序遍历。此外,还阐述了二叉排序树(二叉搜索树)的特性,以及插入和删除操作,特别是删除节点的三种情况。最后,探讨了二叉排序树在最坏情况下可能导致的斜树问题,预示了自平衡树的重要性。
摘要由CSDN通过智能技术生成

  在学习二叉树之前先要学【先导知识】树的概念和表示方法

目录

1、二叉树

2、二叉树的遍历

3、二叉排序树


 前言

对于大量的数据而言,链表的线性访问时间太慢,不宜使用。本章节将会介绍一种简单的数据结构:树(tree),其大部分操作的运行时间平均为O(logN)。在数据结构中树是非常有用的抽象概念,在本篇中我们将讨论二叉树的存储结构、二叉树的遍历和二叉排序树的实现,为后续平衡树以及高阶搜索树打下基础。

1、二叉树

二叉树(binary tree)是一棵每一个节点最多只能有两个孩子的树(度为2),当一棵树只有左孩子或者右孩子的最坏情况称为斜树

当一棵树的度只为0或者2,我们把这种树称为满二叉树;当一棵树的节点严格按照从上到下、从左到右的的次序依次排列,我们把这种树称为完全二叉树,根据定义,满二叉树是完全二叉树的一种特殊情况;如果我们用NULL或者其他不可能出现的关键字来补满所有的空节点,那么这种树称为扩展二叉树。

同时二叉树还有些性质在考试中经常考到,这里也总结一下:

  1. 在第 i  层的二叉树上最多有 2^(i-1) 个节点;
  2. 深度为 k 的二叉树有 2^k-1 个节点; 
  3. 假设度为0、1、2的节点分别是n0、n1、n2,由于一棵树中节点数是T,所以T = n0 + n2 + n2,而树枝(节点之间的连线)的数量是T - 1,所以T - 1 = 2 * n2 + n1,由这两个关系式可得:n0=n2+1;
  4. 具有 n 个节点的完全二叉树深度为( log2n)+1 向下取整;
  5. 由性质4可得:具有 n 个节点的完全二叉树节点按层次编号(从上到下、从左到右),如果 i = 1是根节点,那么对于任意一个节点它的双亲节点序号是 i / 2(i > 1)向下取整,如果当 2 * i > n 那么 节点 i 一定没有左孩子(也没有右孩子),2 * i + 1 > n 没有右孩子;

对于二叉树的实现,我们同样可以考虑使用顺序结构或者链式结构。使用顺序结构,因为查找迅速在比赛中可以用到,我们可以根据上述的性质5,计算出父节点和它孩子之间的下标关系;

而因为一棵二叉树最多有两个孩子,所以我们在使用链式结构的时候可以直接用指针指向它们。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小白还在写代码

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

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

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

打赏作者

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

抵扣说明:

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

余额充值