数据结构——树

数据结构------树

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

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

相关推荐
Heisenberg~28 分钟前
详解八大排序(五)------(计数排序,时间复杂度)
c语言·数据结构·排序算法
Hera_Yc.H12 小时前
数据结构之一:复杂度
数据结构
肥猪猪爸13 小时前
使用卡尔曼滤波器估计pybullet中的机器人位置
数据结构·人工智能·python·算法·机器人·卡尔曼滤波·pybullet
linux_carlos13 小时前
环形缓冲区
数据结构
readmancynn13 小时前
二分基本实现
数据结构·算法
Bucai_不才13 小时前
【数据结构】树——链式存储二叉树的基础
数据结构·二叉树
盼海13 小时前
排序算法(四)--快速排序
数据结构·算法·排序算法
一直学习永不止步13 小时前
LeetCode题练习与总结:最长回文串--409
java·数据结构·算法·leetcode·字符串·贪心·哈希表
珹洺14 小时前
C语言数据结构——详细讲解 双链表
c语言·开发语言·网络·数据结构·c++·算法·leetcode
几窗花鸢15 小时前
力扣面试经典 150(下)
数据结构·c++·算法·leetcode