数据结构——树

数据结构------树

树(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

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

相关推荐
好易学·数据结构8 小时前
可视化图解算法56:岛屿数量
数据结构·算法·leetcode·力扣·回溯·牛客网
Ashlee_code14 小时前
裂变时刻:全球关税重构下的券商交易系统跃迁路线图(2025-2027)
java·大数据·数据结构·python·云原生·区块链·perl
闻缺陷则喜何志丹14 小时前
【带权的并集查找】 P9235 [蓝桥杯 2023 省 A] 网络稳定性|省选-
数据结构·c++·蓝桥杯·洛谷·并集查找
jie*15 小时前
python(one day)——春水碧于天,画船听雨眠。
开发语言·数据结构·python·算法·线性回归
草莓熊Lotso16 小时前
【LeetCode刷题指南】--数组串联,合并两个有序数组,删除有序数组中的重复项
c语言·数据结构·其他·刷题
weixin_4196583116 小时前
数据结构之B-树
java·数据结构·b树
H_HX_xL_L16 小时前
数据结构的算法分析与线性表<1>
数据结构·算法
overFitBrain16 小时前
数据结构-2(链表)
数据结构
xienda16 小时前
数据结构排序算法总结(C语言实现)
数据结构·算法·排序算法
科大饭桶16 小时前
数据结构自学Day8: 堆的排序以及TopK问题
数据结构·c++·算法·leetcode·二叉树·c