学二叉树之前,先来认识下树吧

这篇具有很好参考价值的文章主要介绍了学二叉树之前,先来认识下树吧。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

欢迎来到 Claffic 的博客 💞💞💞 

前言:

往期给大家讲了链表,栈,队列等数据结构, 它们都是线性结构,而今天要讲的是一种非线性结构:,让我们开始吧! 


目录

🌳1.什么是树?

🪲2.有关树的概念

🎄3.树的表示 

⛏️4.树的实际应用


1.什么是树?

树,木本植物之总名... ...欸,走错频道了?

学二叉树之前,先来认识下树吧

其实数据结构中的树就是由大自然中的树定义来的,因为它们有很多相似之处:

学二叉树之前,先来认识下树吧

                        自然中的树(倒置)                                                  数据结构的树

怎么样?是不是还蛮像的🤩

自然地,最顶端的那个结点就叫做 根节点 (图中A结点)

此时引出树的概念:

树是一种非线性的数据结构,它是由 n (n>=0)个有限结点组成的一个具有层次关系的集合。

我们仔细来看看这颗树: 

学二叉树之前,先来认识下树吧

从顶端开始,可以发现 根结点 以上是没有结点的,这里暂称为没有前驱结点

学二叉树之前,先来认识下树吧

注意看,这棵树由根节点分出了三个方向,这三个箭头下又分别有一颗小树,我们称它们为子树。

子树2拿出来再进行分割:

学二叉树之前,先来认识下树吧                                      

子树2下又有子树2.1...

子树下有子树,子树下又有子树... ...

怎么有点像,

递归?

是的,可以理解为 树是递归定义的

接下来跟我看看下面的结构是不是树: 

学二叉树之前,先来认识下树吧

记住:这不是树,三条红边不能存在任意一条!!!

这部分的总结: 

• 树顶端的结点称为根节点,根节点没有前驱结点;

• 子树之间不能相交🍌;

• 除了根节点之外,每个结点有且仅有一个前驱节点;

• 一棵N个结点的树有N-1条边;

• 树是递归定义的。

2.有关树的概念

为了更好介绍树的有关概念,这里画一个更复杂的树:
 

学二叉树之前,先来认识下树吧

• 结点的度:一个结点含有的子树个数(结点下的分支) 如结点A的度为5;

• 树的度:一棵树中最大的结点的度  如上树的度为5;

• 结点的层次:根是第1层,根的子节点所在层是第2层,如此递增;

• 树的高(深)度:最大的结点的层次  如上树的高(深)度是4;

• 叶子结点:度为0的结点(没有子树)  如结点 N,O;

• 双亲结点:如A是B,C,D,E,F的双亲结点;

• (孩)子结点:如B,C,D,E,F是A的(孩)子结点;

• 兄弟结点:具有相同双亲结点的子节点  如G,H;

• 堂兄弟结点:双亲在同一层的结点互为堂兄弟结点  如H,I;

• 非终端结点/分支结点:度不为0的结点  如C,D,E...;

• 结点的祖先:从根节点所经分支上的所有结点  如A是所有结点的祖先;

3.树的表示 

毕竟是代码人,知道了树的结构,就要考虑怎么表示树比较好,

先来想想具体需要表示什么: 

一个是要存储的数据,

另一个是结点与结点之间的关系;

重点看后者:

要表示关系,最好是既能在一条线上深入,又能关系到临近的一条线。

我们想到了孩子与兄弟:

学二叉树之前,先来认识下树吧

typedef int DataType;
struct Node
{
    struct Node* Child1; // 第一个孩子结点
    struct Node* brother; // 指向兄弟结点
    DataType data; // 结点中的数据域
};

除了孩子兄弟表示法这种最常见的表示法,此外还有双亲表示法,孩子表示法,孩子双亲表示法。

由于树的结构本身是具有不确定性的,所以这里不做深一步的实现,大家知道有这些表示方法就好。

4.树的实际应用

这里说个最典型的吧: 

文件资源管理器中的文件管理就是一个树结构:

学二叉树之前,先来认识下树吧


总结: 

这篇博客介绍了树,其实主要作用是为了后期二叉树做铺垫,大家了解它的结构,知道相关概念即可。 

码文不易 

如果你觉得这篇文章还不错并且对你有帮助,不妨支持一波哦  💗💗💗文章来源地址https://www.toymoban.com/news/detail-407179.html

到了这里,关于学二叉树之前,先来认识下树吧的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 二叉树的概念|满二叉树与完全二叉树|二叉树的性质|二叉树的存储结构

    在数据结构中树的用途其实并不大,用得更多的其实是二叉树。所以在本章我们将详细讲解二叉树。 一颗二叉树是结点的一个 有限集合 ,该集合: 或者为空 或者由一个根节点加上两颗(互不相交)别称为左子树和右子树的二叉树组成 如图我们可知, 二叉树的特点: 二叉

    2024年01月21日
    浏览(44)
  • 完全二叉树、完美二叉树、完满二叉树、计算完全二叉树的结点

    对于完美二叉树,我们常用的是另一个名称:满二叉树 完美二叉树的定义: 完美二叉树是一种特殊的完全二叉树,每层都是满的,像一个稳定的三角形 完全二叉树的定义: 全二叉树从根结点到倒数第二层满足完美二叉树,最后一层可以不完全填充,其叶子结点都靠左对齐。

    2023年04月08日
    浏览(82)
  • 数据结构——常见二叉树的分类(完全二叉树、满二叉树、平衡二叉树、二叉搜索树、红黑树)

    专业术语 中文 描述 Root 根节点 一棵树的顶点 Child 孩子结点 一个结点含有的子树的根节点称为该结点的子节点 Leaf 叶子结点 没有孩子的节点 Degree 度 一个节点包含子树的数量 Edge 边 一个节点与另外一个节点的连接 Depth 深度 根节点到这个节点经过边的数量 Height 节点高度 从

    2024年02月03日
    浏览(44)
  • 二叉树OJ题进阶(二叉树层序遍历、根据二叉树创建字符串、判断完全二叉树、二叉树的构建及遍历、二叉树的最近公共祖先(2种))

    1.思路 用队列写: 1.从上到下,从左到右的顺序 2.非递归的方法:使用队列来完成 3.cur充当根结点,当cur不为空的时候,cur进入队列,队列不为空,cur弹出队列打印 4.如果cur的左边不为空,左边进队,右边不为空,右边进队 5.此时队列不为空,弹出队头(也就是cur的左边)打

    2024年02月05日
    浏览(39)
  • 【二叉树part01】| 二叉树的递归遍历、二叉树的迭代遍历、二叉树的统一迭代遍历

    目录 ✿二叉树的递归遍历❀ ☞LeetCode144.前序遍历 ☞LeetCode145.二叉树的后序遍历  ☞LeetCode94.二叉树的中序遍历  ✿二叉树的迭代遍历❀  ☞LeetCode144.前序遍历  ☞LeetCode145.二叉树的后序遍历   ☞LeetCode94.二叉树的中序遍历  ✿二叉树的统一迭代遍历❀   ☞LeetCode144.前序遍

    2024年02月09日
    浏览(38)
  • 【数据结构】树,二叉树,满二叉树,完全二叉树的定义和二叉树的基本操作

    🎊专栏【数据结构】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【勋章】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰 目录 ⭐树 🏳️‍🌈定义  🏳️‍🌈注意 🍔树的基本术语 ⭐二叉树 🏳️‍🌈定义 🎆二叉树和树的区别 🏳️‍🌈二叉树

    2024年02月05日
    浏览(70)
  • 【考研复习】二叉树的特殊存储|三叉链表存储二叉树、一维数组存储二叉树、线索二叉树

    三叉链表结构体表示如下图所示: 构造三叉链表方式: 另外设计一个填充函数,函数功能是将所有结点的parent结点填充正确。 线索二叉的的基本结构: 使用中序遍历的顺序进行线索化。代码中有一个难以理解的点,为什么不用p直接找后继,而是使用了前驱结点找后继。实

    2024年02月04日
    浏览(38)
  • 【数据结构-二叉树】二叉树

    💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学习,不断总结,共同进步,活到老学到老 导航 檀越剑指大厂系列:全面总

    2024年02月07日
    浏览(48)
  • 二叉树进阶(搜索二叉树)

    目录 引言  1.二叉搜索树的模拟实现 1.1  链式二叉树的定义 1.2 二叉搜索树的模拟实现  1.2.1 二叉搜索树的结点类 1.2.2 二叉搜索树类的构造与中序遍历实现 1.2.3 增 1.非递归实现 2.非递归实现 1.2.4 查 1.非递归实现 2.递归实现  1.2.5 删 1.非递归实现 (1)情况分析 (2)解决方案  (

    2024年02月15日
    浏览(286)
  • 二叉树题目:对称二叉树

    标题:对称二叉树 出处:101. 对称二叉树 3 级 要求 给你一个二叉树的根结点 root texttt{root} root ,检查它是否轴对称。 示例 示例 1: 输入: root   =   [1,2,2,3,4,4,3] texttt{root = [1,2,2,3,4,4,3]} root = [1,2,2,3,4,4,3] 输出: true texttt{true} true 示例 2: 输入: root   =   [1,2,2,null,3,null,

    2024年02月12日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包