数据结构——树

数据结构------树

树(Tree)是一种常见的数据结构,用于存储具有层级关系的数据。树由一组称为节点(Node)的元素组成,节点之间通过边连接。其中一个节点被称为根节点(Root),根节点没有父节点;其他节点分为内部节点和叶节点,内部节点有至少一个子节点,叶节点没有子节点。

树有许多种类,包括二叉树(Binary Tree)、二叉搜索树(Binary Search Tree)、平衡二叉树(Balanced Binary Tree)等。二叉树是一种特殊的树结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。

以下是一个用 C++ 实现的二叉树的示例:

cpp 复制代码
#include <iostream>

// 二叉树节点定义
struct TreeNode {
    int val;
    TreeNode* left;
    TreeNode* right;
    
    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};

// 前序遍历二叉树
void preOrderTraversal(TreeNode* root) {
    if (root == nullptr) {
        return;
    }

    std::cout << root->val << " ";  // 先访问根节点
    preOrderTraversal(root->left);  // 递归遍历左子树
    preOrderTraversal(root->right);  // 递归遍历右子树
}

int main() {
    // 构建二叉树
    TreeNode* root = new TreeNode(1);
    root->left = new TreeNode(2);
    root->right = new TreeNode(3);
    root->left->left = new TreeNode(4);
    root->left->right = new TreeNode(5);

    // 前序遍历二叉树
    std::cout << "前序遍历结果:";
    preOrderTraversal(root);
    std::cout << std::endl;

    return 0;
}

上述示例中,定义了一个简单的二叉树结构 TreeNode,每个节点包含一个整数值 val,以及指向左子节点和右子节点的指针 left 和 right。程序提供了一个函数 preOrderTraversal 来实现二叉树的前序遍历,即先访问根节点,然后递归遍历左子树和右子树。

在 main 函数中,首先构建了一个二叉树,包含了节点值为 1、2、3、4 和 5 的节点,并建立了它们之间的关系。然后,调用 preOrderTraversal 函数对该二叉树进行前序遍历,并输出遍历结果。输出结果为:

bash 复制代码
前序遍历结果:1 2 4 5 3

这个示例展示了二叉树的基本操作,包括构建二叉树和前序遍历。二叉树常用于各种问题的建模和解决,例如表达式求值、排序算法、图算法等。通过递归或迭代的方式,可以对二叉树进行不同的遍历,如前序遍历、中序遍历、后序遍历、层序遍历等。

相关推荐
Hello World . .10 小时前
数据结构:队列
c语言·开发语言·数据结构·vim
you-_ling12 小时前
数据结构:4.二叉树
数据结构
senijusene13 小时前
数据结构与算法:队列与树形结构详细总结
开发语言·数据结构·算法
青桔柠薯片13 小时前
数据结构:队列,二叉树
数据结构
杜家老五13 小时前
综合实力与专业服务深度解析 2026北京网站制作公司六大优选
数据结构·算法·线性回归·启发式算法·模拟退火算法
寄存器漫游者13 小时前
数据结构:带头节点单链表
c语言·数据结构
鹿角片ljp14 小时前
力扣9.回文数-转字符双指针和反转数字
java·数据结构·算法
梦梦代码精14 小时前
开源、免费、可商用:BuildingAI一站式体验报告
开发语言·前端·数据结构·人工智能·后端·开源·知识图谱
what丶k17 小时前
深度解析:以Kafka为例,消息队列消费幂等性的实现方案与生产实践
java·数据结构·kafka
爱敲代码的TOM19 小时前
基础算法技巧总结2(算法技巧零碎点,基础数据结构,数论模板)
数据结构·算法