【数据结构】树和二叉树1——树


线性结构:最多一个前驱,最多一个后继
树形结构:最多一个前驱,可以多个后继
图形结构:可以多个前驱,可以多个后继
在这里插入图片描述

树的定义

树(Tree)是n(n≥0)个结点的有限集。 若n=0,称为空树; 若n>0,则它满足如下两个条件: ① 有且仅有一个特定的称为根(Root)的结点; ② 其余结点可分为m(m≥0)个互不相交的有限集T1, T2, T3,…Tm,其中每一个集合本身又是一 棵树,并称为根的子树(SubTree)。

在这里插入图片描述

树的表示方式

① 倒悬树。使用一棵倒置的树表示树结构,非常直观和形象。
在这里插入图片描述

② 嵌套集合。使用集合以及集合的包含关系描述树结构
在这里插入图片描述
③ 广义表形式。括号表示法。用一个字符串表示树。
在这里插入图片描述
④ 凹入法表示形式。使用线段的伸缩关系描述树结构。
在这里插入图片描述

树形结构的用途

在这里插入图片描述

树的基本术语

  • 结点(node):一个数据元素及其若干指向其子树的分支。(含数据元素值及其逻辑关系信息)

  • 根结点:非空树中无前驱结点的结点。

  • 结点的度(degree) :结点拥有的子树数。

  • 树的度:树内各结点的度的最大值。(通常将度为m的树称为m次树或者m叉树。)
    在这里插入图片描述 - 叶子(left)结点:树中度为0的结点称为叶子结点(或终端结点)。

  • 分支结点:度不为0的结点称为分支结点(或非终端结点或非叶子结点),根结点也是分支节点。除根结点外,分支结点又称为内部结点。在这里插入图片描述

  • 孩子结点、双亲结点:一个结点的子树的根称为该结点的孩子结点(child)或子结点;相应地,该结点是其孩子结点的双亲结点(parent)或父结点。在这里插入图片描述

  • 结点的层次:树结构的元素之间有明显的层次关系,结点的层次从根开始定义,根结点的层次为1,其孩子结点的层次为2。在这里插入图片描述

  • 树的深度:树中叶子结点所在的最大层次,树的深度也称为高度。在这里插入图片描述

  • 兄弟结点:同一双亲结点的所有子结点互称为兄弟结点。

  • 堂兄弟结点:在同一层,但双亲不同的结点称堂兄弟结点。在这里插入图片描述

  • 祖先结点:从根结点到此结点所经分支上的所有结点都是该结点的祖先结点。在这里插入图片描述

  • 子孙结点:某一结点的孩子,以及这些孩子的孩子,直到叶结点,都是此结点的子孙结点。在这里插入图片描述

  • 路径(从根到结点的):从根到该结点所经分支和结点构成。在这里插入图片描述

  • 有序树、无序树:若树中各结点的子树是按照一定的次序从左向右安排的,且相对次序是不能随意变换的,则称为有序树(最左边为第一个孩子),否则称为无序树。在这里插入图片描述

  • 森林(forest):是m(m≥0)棵互不相交的树的集合。显然,若将一棵树的根结点删除,剩余的子树就构成了森林。一棵树可以看成是一个特殊的森林。给森林中的各子树加上一个双亲结点,森林就变成了树。树一定是森林,森林不一定是树。
    在这里插入图片描述

线性结构和树形结构的比较

在这里插入图片描述


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 什么是二叉树? 二叉树是一种形结构,其中每个节点最多有两个子节点。一个节点的左子节点比该节点小,右子节点比该节点大。二叉树通常用于搜索和排序。 2. 二叉树的遍历方法有哪些? 二叉树的遍历方法包括前序遍历、中序遍历和后序遍历。前序遍历是从根节点开始遍历,先访问根节点,再访问左子,最后访问右子。中序遍历是从根节点开始遍历,先访问左子,再访问根节点,最后访问右子。后序遍历是从根节点开始遍历,先访问左子,再访问右子,最后访问根节点。 3. 二叉树的查找方法有哪些? 二叉树的查找方法包括递归查找和非递归查找。递归查找是从根节点开始查找,如果当前节点的值等于要查找的值,则返回当前节点。如果要查找的值比当前节点小,则继续在左子中查找;如果要查找的值比当前节点大,则继续在右子中查找。非递归查找可以使用栈或队列实现,从根节点开始,每次将当前节点的左右子节点入栈/队列,直到找到要查找的值或者栈/队列为空。 4. 二叉树的插入与删除操作如何实现? 二叉树的插入操作是将要插入的节点与当前节点的值进行比较,如果小于当前节点的值,则继续在左子中插入;如果大于当前节点的值,则继续在右子中插入。当找到一个空节点时,就将要插入的节点作为该空节点的子节点。删除操作需要分为三种情况:删除叶子节点、删除只有一个子节点的节点和删除有两个子节点的节点。删除叶子节点很简单,只需要将其父节点的对应子节点置为空即可。删除只有一个子节点的节点,需要将其子节点替换为该节点的位置。删除有两个子节点的节点,则可以找到该节点的后继节点(即右子中最小的节点),将其替换为该节点,然后删除后继节点。 5. 什么是平衡二叉树? 平衡二叉树是一种特殊的二叉树,它保证左右子的高度差不超过1。这种平衡可以确保二叉树的查找、插入和删除操作的时间复杂度都是O(logn)。常见的平衡二叉树包括红黑树和AVL

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值