数据结构 --- c语言二叉树基础(无序二叉树)

本文详细探讨了二叉树的结构特性,包括根节点、兄弟姐妹节点、叶子节点、深度与广度的概念,以及五种基本形态。重点讲解了满二叉树和完全二叉树的特点,并介绍了前序、中序和后序遍历的方法,以及如何通过遍历结果重建二叉树。
摘要由CSDN通过智能技术生成

二叉树的形态 

  • 根节点:最上面的节点,父节点、子节点、前驱节点

  • 相邻的同一个父节点下面的两个孩子节点:兄弟节点、姊妹节点

  • 最外层的绿色部分:叶子节点

  • 深度指的是最长那根线有几个节点,最长的线有 3 个节点,深度是 3

  • 广度指的是某个节点有几根线出去,对于 F 节点有 2 根线出去,广度是 2

  • 一般叶子节点为空,广度是 0

  • 无向二叉树,不需要考虑入度、出度,只需要考虑广度和深度

二叉树的5种形态

  • 结构体指针赋值为空 - - - 空的二叉树

  • 只有根节点的二叉树 

  • 只有左子树的二叉树 - - - 只有左边一支的二叉树

  • 只有右子树的二叉树 - - - 只有右边一支的二叉树

  • 左右子树都齐全的二叉树 - - - 完全二叉树、满二叉树

满二叉树

  • 所有节点当中,只有广度为 0 和 2 的二叉树,所有叶子节点都在同一层上面

  • 节点关系可以用等比数列求和去求,知道深度(第几层)可以求最多节点数 1 2 4

  • 3 个节点最多有 2 条边,n个节点最多有 n - 1 条边

完全二叉树

  • 最后一个节点之前的任何一个节点都是连续的

二叉树的遍历

  • 遍历:每一个顶点只打印一次

  • 3 个顶点,有 6 种打印方式,一般只研究从左到右(3 种)

  • 根据根所在的位置确定是什么打印方式,根在前面:前(先)序遍历;根在中间:中序遍历;根在后面:后序遍历

  • 前序遍历:根在前面,根左右

  • 中序遍历:左根右

  • 后序遍历:根在后面,左右根

  • 从上往下,3 个 3 个节点看,A 节点遍历完了(A 节点完整遍历的结果为 ABC),再遍历B节点(B节点也需要完整遍历,结果为 BDE) 把 B 用 BDE 替换,空可以不用写,遍历完左子树后,遍历右子树

  • 层次遍历:通过队列实现,一层一层去遍历,A → B、C → D、E、F → G、H

根据两种顺序遍历的结果还原二叉树

  • 根据前、中序遍历的结果 或者 根据中、后序遍历的结果还原二叉树

  • 后序遍历,最后一个节点一定是根节点;前序遍历,第一个节点一定是根节点

  • 知道了根节点是什么,在中序遍历中找根节点的位置,根节点左边的是左子树,根节点右边是右子树,C 在中序遍历的右边,放在右边,中序遍历的 H 在二叉树中的位置结合后序遍历分析,知道在 C 的左边还是右边

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

qiuqiuyaq

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

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

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

打赏作者

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

抵扣说明:

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

余额充值