c语言数据结构-遍历

简介: c语言数据结构-遍历

 (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹)

目录

初识遍历:

创建二叉树  (http://t.csdn.cn/qgzDU)

遍历二叉树:

前序遍历:

中序遍历:

后序遍历:


初识遍历:

特点:

按某条搜索路线遍访每个结点且不重复(又称周游)

作用:

它是树结构插入、删除、修改、查找和排序运算的前提,是二叉树一切运算的基础和核心

创建二叉树  (http://t.csdn.cn/qgzDU

遍历二叉树

前序遍历

若二叉树为空,则空操作;否则

       1.访问根结点

       2.前序遍历左子树

       3.前序遍历右子树

特点:第一位一定是根节点

如下图所示:从根结点A开始,先遍历左子树B,然后再遍历B的左子树D,因为D没有左右子树,所以返回B点,遍历B的右子树E,遍历完A的左子树B后开始遍历A的右子树C (根-左-右

/** 前序遍历:也叫做先根遍历、先序遍历、前序周游。可以记做根-左-右 */
void PreOrderTraverse(TreeNode* node) 
{
    //先访问根结点,然后遍历左子树,最后遍历右子树
    if (node) 
    {
        printf("[%d, %s]-", node->data.id, node->data.name);
        PreOrderTraverse(node->left);
        PreOrderTraverse(node->right);
    }
}

中序遍历:

若二叉树为空,则空操作;否则

       1.中序遍历左子树

       2.访问根结点

       3.中序遍历右子树

特点:根节点必在中间

如下图所示:先访问最左边的结点,然后访问相应的根结点,最后访问右结点(左-根-右

/** 中序遍历:也叫做中根遍历、中序周游。左-根-右 */
void InOrderTraverse(TreeNode* node) 
{
    if (node) 
    {
        InOrderTraverse(node->left);
        printf("[%d, %s]-", node->data.id, node->data.name);
        InOrderTraverse(node->right);
    }
}

后序遍历:

若二叉树为空,则空操作;否则

       后序遍历左子树

       后序遍历右子树

       访问根结点

特点:最后一位一定是根节点

如下图所示:先访问左结点,在访问右结点,最后访问根结点(左-右-根

/** 后序遍历:也叫做后根遍历、后序周游。左-右-根 */
void PostOrderTraverse(TreeNode* node)
{
    if (node) 
    {
        PostOrderTraverse(node->left);
        PostOrderTraverse(node->right);
        printf("[%d, %s]-", node->data.id, node->data.name);
    }
}


相关文章
|
3天前
|
存储 算法 C语言
通义灵码在考研C语言和数据结构中的应用实践 1-5
通义灵码在考研C语言和数据结构中的应用实践,体验通义灵码的强大思路。《趣学C语言和数据结构100例》精选了五个经典问题及其解决方案,包括求最大公约数和最小公倍数、统计字符类型、求特殊数列和、计算阶乘和双阶乘、以及求斐波那契数列的前20项和。通过这些实例,帮助读者掌握C语言的基本语法和常用算法,提升编程能力。
|
3天前
|
存储 算法 C语言
【趣学C语言和数据结构100例】
《趣学C语言和数据结构100例》精选5个编程问题,涵盖求最大公约数与最小公倍数、字符统计、特殊序列求和及阶乘计算等,通过实例讲解C语言基础与算法思维,适合初学者实践学习。
|
13天前
|
存储 C语言
探索C语言数据结构:利用顺序表完成通讯录的实现
本文介绍了如何使用C语言中的顺序表数据结构实现一个简单的通讯录,包括初始化、添加、删除、查找和保存联系人信息的操作,以及自定义结构体用于存储联系人详细信息。
17 2
|
19天前
|
存储 编译器 C++
【初阶数据结构】掌握二叉树遍历技巧与信息求解:深入解析四种遍历方法及树的结构与统计分析
【初阶数据结构】掌握二叉树遍历技巧与信息求解:深入解析四种遍历方法及树的结构与统计分析
|
11天前
|
存储 算法
数据结构与算法学习十六:树的知识、二叉树、二叉树的遍历(前序、中序、后序、层次)、二叉树的查找(前序、中序、后序、层次)、二叉树的删除
这篇文章主要介绍了树和二叉树的基础知识,包括树的存储方式、二叉树的定义、遍历方法(前序、中序、后序、层次遍历),以及二叉树的查找和删除操作。
15 0
|
1月前
|
存储 人工智能 C语言
数据结构基础详解(C语言): 栈的括号匹配(实战)与栈的表达式求值&&特殊矩阵的压缩存储
本文首先介绍了栈的应用之一——括号匹配,利用栈的特性实现左右括号的匹配检测。接着详细描述了南京理工大学的一道编程题,要求判断输入字符串中的括号是否正确匹配,并给出了完整的代码示例。此外,还探讨了栈在表达式求值中的应用,包括中缀、后缀和前缀表达式的转换与计算方法。最后,文章介绍了矩阵的压缩存储技术,涵盖对称矩阵、三角矩阵及稀疏矩阵的不同压缩存储策略,提高存储效率。
222 8
|
1月前
|
C语言
数据结构基础详解(C语言):图的基本概念_无向图_有向图_子图_生成树_生成森林_完全图
本文介绍了图的基本概念,包括图的定义、无向图与有向图、简单图与多重图等,并解释了顶点度、路径、连通性等相关术语。此外还讨论了子图、生成树、带权图及几种特殊形态的图,如完全图和树等。通过这些概念,读者可以更好地理解图论的基础知识。
|
1月前
|
存储 算法 C语言
数据结构基础详解(C语言): 二叉树的遍历_线索二叉树_树的存储结构_树与森林详解
本文从二叉树遍历入手,详细介绍了先序、中序和后序遍历方法,并探讨了如何构建二叉树及线索二叉树的概念。接着,文章讲解了树和森林的存储结构,特别是如何将树与森林转换为二叉树形式,以便利用二叉树的遍历方法。最后,讨论了树和森林的遍历算法,包括先根、后根和层次遍历。通过这些内容,读者可以全面了解二叉树及其相关概念。
|
1月前
|
存储 C语言
数据结构基础详解(C语言): 树与二叉树的应用_哈夫曼树与哈夫曼曼编码_并查集_二叉排序树_平衡二叉树
本文详细介绍了树与二叉树的应用,涵盖哈夫曼树与哈夫曼编码、并查集以及二叉排序树等内容。首先讲解了哈夫曼树的构造方法及其在数据压缩中的应用;接着介绍了并查集的基本概念、存储结构及优化方法;随后探讨了二叉排序树的定义、查找、插入和删除操作;最后阐述了平衡二叉树的概念及其在保证树平衡状态下的插入和删除操作。通过本文,读者可以全面了解树与二叉树在实际问题中的应用技巧和优化策略。
|
1月前
|
存储 算法 C语言
C语言手撕数据结构代码_顺序表_静态存储_动态存储
本文介绍了基于静态和动态存储的顺序表操作实现,涵盖创建、删除、插入、合并、求交集与差集、逆置及循环移动等常见操作。通过详细的C语言代码示例,展示了如何高效地处理顺序表数据结构的各种问题。