数据结构(二叉树)

二叉树简介-数据结构和算法

树是一种流行的数据结构,本质上是非线性的。与其他数据结构(如数组、堆栈、队列和链表)不同,树表示分层结构。树的排序信息并不重要。一棵树包含节点和 2 个指针。这两个指针是父节点的左子节点和右子节点。让我们详细了解树的术语。

  1. :树的根是没有父节点的树的最顶层节点。每个树只有一个根节点。
  2. 父节点:作为节点的前置节点的节点 称为节点的父节点。
  3. 兄弟:同一父节点的子节点称为同级节点。
  4. 边缘: Edge 充当父节点和子节点之间的链路。
  5. : 没有子节点的节点称为叶节点。它是树的最后一个节点。树中可以有多个叶节点。
  6. 子树: 节点的子树是将该特定节点视为根节点的树。
  7. 深度:节点的高度是从该节点到该特定节点的距离。
  8. **高度:**节点的高度是从该节点到该子树的最深节点的距离。
  9. 树的高度:树的高度是任何节点的最大高度。这与根节点的高度相同。
  10. **水平:**级别是对应于树的给定节点的父节点数。
  11. **节点度:**节点的次数是其子节点的数量。
  12. **零:**二叉树中的NULL节点树为(N+1),其中N是二叉树中的节点数。
    二叉树简介

为什么要使用树数据结构

1.使用树的一个原因可能是因为你想存储自然形成层次结构的信息。
列如,计算机上的文件系统:文件系统
2.树(有一些排序,列如BST)提供适度的访问/搜索(比链表快,比数组慢)。
3.树提供适度的插入/删除(比数组快,比无序列表慢)。
4.与链表和数组不同,树对节点数量没有上限,因为节点是使用指针链接的。

树形数据结构的主要应用:

  1. 操作分层数据。
  2. 使信息易于搜索。
  3. 操作排序后的数据列表。
  4. 作为合成数字图像以获得视觉效果的工作流程。
  5. 路由器算法。
  6. 多阶段决策的形式(见商业国际象棋)。
  7. 树可用于表示句子的结构,并可用于解析算法以分析句子的语法。
  8. 树可用于表示游戏中计算机控制的角色的决策过程,列如在决策树中。
  9. 霍夫曼编码使用树来表示文字中字符的频率,可用于数据压缩。
    10.树用于表示编程语言的语法,并可用于编译器设计中检查程序的语法并生成机器代码。

什么是二叉树?

二叉树是一种树数据结构,其中每个节点最多可以有两个子节点,分别称为左子节点和右子节点。二叉树中最顶层的节点称为根,最底部的节点称为叶子。二叉树可以可视化为一个层次结构,根在顶部,叶子在底部。
二叉树在计算机科学中有许多应用,包括数据存储和检索、表达式评估、网络路由和游戏 AI。它们还可用于实现各种算法,例如搜索、排序和图形算法。

二叉树的表示

树中的每个节点都包含以下内容:

  • 数据
  • 指向左侧子项的指针
  • 指向右侧子项的指针
    二叉树
    在 C 中,我们可以使用结构表示树节点。在其他语言中,我们可以使用类作为其 OOP 功能的一部分。下面是一个包含整数数据的树节点示例。
// Use any below method to implement Nodes of tree
  
// Method 1: Using "struct" to make
// user-define data type
struct node {
    int data;
    struct node* left;
    struct node* right;
};
  
// Method 2: Using "class" to make
// user-define data type
class Node {
public:
    int data;
    Node* left;
    Node* right;
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值