数据结构——树

数据结构------树

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

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

相关推荐
自我意识的多元宇宙1 小时前
二叉树遍历方式代码解读(2迭代)
数据结构
脱氧核糖核酸__1 小时前
LeetCode热题100——238.除了自身以外数组的乘积(题目+题解+答案)
数据结构·c++·算法·leetcode
再卷也是菜1 小时前
算法提高篇(1)线段树(上)
数据结构·算法
杨凯凡2 小时前
【012】图与最短路径:了解即可
java·数据结构
j_xxx404_2 小时前
C++算法:哈希表(简介|两数之和|判断是否互为字符重排)
数据结构·c++·算法·leetcode·蓝桥杯·力扣·散列表
脱氧核糖核酸__3 小时前
LeetCode热题100——189.轮转数组(题解+答案+要点)
数据结构·c++·算法·leetcode
贾斯汀玛尔斯3 小时前
每天学一个算法-快速排序(Quick Sort)
数据结构·算法
见叶之秋4 小时前
【数据结构】详解二叉树和堆
数据结构·算法
不才小强5 小时前
线性表详解:顺序与链式存储
数据结构·算法
计算机安禾5 小时前
【数据结构与算法】第42篇:并查集(Disjoint Set Union)
c语言·数据结构·c++·算法·链表·排序算法·深度优先