.个人主页:晓风飞专栏:数据结构|Linux|C语言路漫漫其修远兮,吾将上下而求索文章目录前言树概念注意:树的基本概念及术语基本概念及术语以家谱为例树的表示孩子兄弟表示法简介优势应用示例树在实际中的运用文件系统的目录树结构优点实例Windows中的树Linux中的树树结构的视觉表示二叉树概念及结构基本定义特点递归定义应用场景二叉树的性质二叉树的存储结构顺序存储链式存储三叉链:堆的概念及结构最大堆(大根堆)最小堆(小根堆)存储方式堆的性质操作结语前言在计算机科学的丰富和多样的领域中,数据结构扮演着核心角色。特别是树和堆,作为高效组织和处理数据的关键结构,它们在算法设计和系统实现中占据着重要位置。
🏆作者简介,愚公搬代码🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,51CTO博客专家等。🏆《近期荣誉》:2023年华为云十佳博主,2022年CSDN博客之星TOP2,2022年华为云十佳博主等。🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。🏆🎉欢迎👍点赞✍评论⭐收藏文章目录🚀前言🚀一、二叉树的分类🔎1.线索二
前言我们已经学过了顺序表、链表、栈和队列这些属于线性结构的数据结构,那么下面我们就要学习我们第一个非线性结构,非线性结构又有哪些值得我们使用的呢?那么接下来我们就将谈谈树的概念了。1.树的概念与结构1.1树的概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 有一个特殊的结点,称为根结点,根节点没有前驱结点。除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti(1树是递归定义的。 注意:树形结构中,子树之间不能有交集,否则就不是树形结构,那
一、树的基本概念专业术语中文描述Root根节点一棵树的顶点Child孩子结点一个结点含有的子树的根节点称为该结点的子节点Leaf叶子结点没有孩子的节点Degree度一个节点包含子树的数量Edge边一个节点与另外一个节点的连接Depth深度根节点到这个节点经过边的数量Height节点高度从当前节点到叶子节点形成路径中边的数量Level层级节点到根节点最长路径的边的总和Path路径一个节点和另一个节点之间经过的边和Node的序列 二、二叉树 二叉树的定义:二叉树是每个结点最多只能有两个分支的树,左边的分支称为左子树,右边的分支称为右子树。 二叉树的特点:在非空二
👑作者主页:@进击的安度因🏠学习社区:进击的安度因(个人社区)📖专栏链接:数据结构文章目录一、二叉树的链式存储二、二叉树链式结构的实现结构设计手动构建二叉树前序遍历中序遍历后序遍历层序遍历计算二叉树大小计算叶子节点个数计算二叉树高度计算第k层的节点个数查找某个值对应的节点判断是否为完全二叉树销毁三、完整代码test.c如果无聊的话,就来逛逛我的博客栈吧!🌹今天我们正式开始学习二叉树的链式结构。学习完这块可以大幅度的提高大家的递归水平,同时这块也是一个难点,让我们一起攻克二叉树!一、二叉树的链式存储概念:二叉树的链式存储结构是指用链表来表示一棵二叉树,即用链来指示元素的逻辑关系。通常的方法是链表
博主简介:努力学习的22级计算机科学与技术本科生一枚🌸博主主页:@是瑶瑶子啦每日一言🌼:你不能要求一片海洋,没有风暴,那不是海洋,是泥塘——毕淑敏目录一、题目二、题解三、代码一、题目🔗236.二叉树的最近公共祖先二、题解注意:祖先是包括自身的!🍊首先要明白,当root为p,q的最近祖先节点,只有下面3种情况:1.p,q在root分别存在于root的左右子树中(异侧)——>root即为最近祖先节点2.p,q均在root的左侧——>p/q即为最近祖先节点3.p,q均在root的右侧——>同理🍊递归函数的定义publicTreeNodelowestCommonAncestor(TreeNoderoo
任务描述设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写三个递归算法分别实现二叉树的先序、中序和后序遍历。编程要求输入多组数据。每组数据一行,为二叉树的前序序列(序列中元素为‘0’时,表示该结点为空)。当输入只有一个“0”时,输入结束。输出每组数据输出三行,为二叉树的先序、中序和后序序列。测试说明平台会对你编写的代码进行测试:测试输入:abcd00e00f00ig00h00abd00e00cf00g000预期输出:abcdefighdcebfagihdecfbghiaabdecfgdbeafcgdebfgca来源BJFUOJ开始你的任务吧,祝你成功!注:从微信或note
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、二叉树的存储结构二、二叉树链式结构的实现2.1手动构建一课树2.2二叉树的遍历三、二叉树链式结构的实现3.1前序遍历(递归)3.2中序遍历(递归)3.3后序遍历(递归)3.4层序遍历(非递归)3.5求一棵二叉树节点的个数3.6叶子节点的个数3.7二叉树的高度3.8求第k层的节点个数3.9二叉树中查找值为x的节点3.10通过前序遍历的数组构建二叉树("ABD##E#H##CF##G##",#是空)3.11判断一棵树是否是完全二叉树3.12销毁一棵树四、二叉树的性质总结前言世上有两种耀眼的光芒,一种是正在升起的太阳,一
文章目录三叉链表存储二叉树三叉链表的前序遍历(不使用栈)法一三叉链表的前序遍历(不使用栈)法二一维数组存储二叉树一维数组存储二叉树的先序遍历线索二叉树的建立中序线索二叉树的遍历真题演练三叉链表存储二叉树三叉链表结构体表示如下图所示:构造三叉链表方式:typedefstructnode{chardata;structnode*parent,*lchild,*rchild;}BTNode,*BiTree;BTNode*creattree(BiTree&t){//易错点:树的引用charch;cin>>ch;if(ch=='#'){t=NULL;}else{t=(BTNode*)malloc(siz
1、被删除的节点是叶子节点将双亲节点中相应的指针域的值改为空2、被删除的节点只有左子树或右子树将要删除的节点的双亲节点相应指针域的值指向被删除节点的左子树或者右子树3、被删除节点既有左子树又有右子树将左子树中的最大值或者右子树中的最小值代替该节点TreeNode*DeleteTreeNode(TreeNode*root,intdata){ if(!root){ returnNULL; } TreeNode*node=NULL;//遍历指针 TreeNode*parent=NULL;//记录指针的父节点 node=root; while(1)//寻找要删除的位置 {parent=node;//