草庐IT

二叉树OJ题

全部标签

数据结构之二叉树与堆以及力扣刷题函数扩展

个人主页:点我进入主页专栏分类:C语言初阶    C语言程序设计————KTV    C语言小游戏   C语言进阶C语言刷题    数据结构初阶欢迎大家点赞,评论,收藏。一起努力目录1.前言2.树2.1概念 2.2树的相关概念3.堆3.1堆的概念3.2小堆函数实现4.力扣刷题函数5.总结1.前言    在前面我们学习了关于顺序表,链表,栈,队列的存储方式。今天我将给大家带来关于树的一些内容以及堆的部分内容,详细包括树的定义,树相关的概念,二叉树和满二叉树的概念,树代码的实现会在后面的内容,大堆和小堆的代码实现。今天的内容相较于前面会有一点难以理解,希望大家可以认真学习,当然还有几个力扣刷题的函

数据结构-二叉树(2)

3.4堆的应用3.4.1堆排序堆排序即利用堆的思想来进行排序,总共分为两个步骤:1.建堆  1.升序:建大堆;  2.降序:建小堆。2.利用堆删除思想来进行排序这种写法有两个缺点: 1、先有一个堆的数据结构 2、空间复杂度复杂度的消耗voidHeapSort(int*a,intn){ HPhp; HeapInit(&hp); for(inti=0;i所以我们可以稍微改进一下,使得只要有一个数组就可以进行堆排序:假设要排一个升序:先使用向下调整的方式建一个大堆,然后再写一个循环,当end=0时结束循环,每次进入循环先交换首尾数据,然后从头开始进行向下调整,每次end--。voidAdjustDo

二叉树遍历及应用

文章目录前言构建二叉树前序遍历中序遍历后序遍历二叉树的结点个数二叉树的叶节点个数二叉树的高度二叉树第K层结点个数前言二叉树的遍历及应用主要是运用了递归、分治的思想。在这一篇文章,小编将介绍二叉树的前序遍历、中序遍历、后序遍历,求二叉树结点个数、叶节点个数、第K层结点个数、二叉树的深度。构建二叉树手搓二叉树的结构小编简单构建一个二叉树的结构,方便后面的测试构建的方式比较简单,在树的结构中有当前结点的数据、当前结点的左节点、右节点。除此之外,还需要开辟结点。有了前面数据结构的学习,小编认为手搓一个二叉树的结构相对来说简单一些typedefintTdatatype;typedefstructTree

设计一个求结点x在二叉树中的双亲结点算法

要设计一个求二叉树中指定节点x的双亲节点的算法,可以按照以下步骤进行:创建一个递归函数 findParent(root,x),其中 root 是当前子树的根节点,x 是要查找其双亲节点的节点。首先检查根节点是否为空或者根节点是否就是要查找的节点x,若是,则说明x没有双亲节点,返回空(或者其他适合的标识)。如果x不是根节点,检查根节点的左子树和右子树是否存在x节点。若左子树中找到了x节点,则返回根节点作为x的双亲节点。否则,在右子树中找到了x节点,则同样返回根节点作为x的双亲节点。下面是一个示例的c代码实现:#include#includestructNode{intdata;structNod

数据结构 | 二叉树的概念及前中后序遍历

数据结构|二叉树的概念及前中后序遍历文章目录数据结构|二叉树的概念及前中后序遍历一、树概念及结构1.1树的相关概念二、树的表示2.2树在实际中的运用(表示文件系统的目录树结构)三、二叉树概念及结构3.1二叉树的基本概念3.2二叉树的结构:a.满二叉树(FullBinaryTree):b.完全二叉树(CompleteBinaryTree):c.二叉搜索树(BinarySearchTree,BST):四、二叉树的应用五、二叉树的性质六、二叉树的存储结构6.1顺序存储结构6.2链式存储结构6.3二叉树的顺序结构及实现七、二叉树链式结构的实现八、二叉树的遍历【重点】8.1前序、中序以及后序遍历一、树概

二叉树的层序创建和层序遍历(c++,c)

层序遍历时顺序为A->B->C->D->E->F->G,先被访问的结点,他的孩子也是先被访问的,层序创建二叉树时,先创建的结点他的孩子也先创建,符合先进先出原则,因此可以用队列来实现。层序创建和层序遍历的思路大体一致,首先得明白层序遍历。1.层序遍历思路:建立一个树节点的队列。第一步,若根节点不为空我们先让根节点入队,判断他的左右孩子是否为空,若不为空打印根节点并让他的孩子入队。第二步,取出队列头结点,判断他是否有左右孩子,若有让其孩子入队。重复第二步直到队列为空。#includeusingnamespacestd;typedefcharDataType;//二叉树数据结构structnode

【LeetCode】【C++】string OJ必刷题

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C++》《Linux》🌝每一个不曾起舞的日子,都是对生命的辜负目录前言【LeetCode】415.字符串相加【LeetCode】43.字符串相乘  【LeetCode】125.验证回文字符串【LeetCode】541.反转字符串Ⅱ【LeetCode】557.反转字符串中的单词Ⅲ前言利用string的一些常用方法解题,本篇文章不乏有你眼前一亮的优秀方法,欢迎大家订阅。欢迎大家📂收藏📂以便未来做题时可以快速找到思路,巧妙的方法可以事半功倍。=========================

数据结构-二叉树-二叉树左右孩子交换(递归)

 注:本文采用队列和递归的算法进行创建和层次遍历。同时不能采用BFS和DFS,因为需要把当前根节点的左孩、右孩勾链并输入才能递归下一个根节点;队列用于存储此时应该递归的根节点;格式:每一行尾不能有空格;Description根据输入利用二叉链表创建二叉树,并将所有结点的左右孩子交换,并输出。说明:输入的第一行为根结点;第二行以后每行的第二元为第一元的左孩子,第三元为第一元的右孩子,0表示空。输出时按结点层次顺序输出。SampleInputAABCB0DC0ED00E00SampleOutputACBCE0BD0E00D00Hint说明:输出有换行#include#include#include

【数据结构】线索二叉树(适用场景+图文推导过程+C语言代码实现)

导读:普通二叉树(如下图):空间浪费:存在大量“∧”,该空间未利用。时间效率:查找一次结点的前驱、后继就需要遍历一次,时间效率低。        在实际问题中,如果所用的二叉树需经常遍历或查找结点时需要某种遍历序列中的前驱和后继,那么采用线索二叉链表的存储结构就是非常不错的选择。一、线索二叉树1.定义        线索二叉树:指向前驱和后继的指针称为线索,加上线索的二叉链表称为线索链表,相应的二叉树就称为线索二叉树(ThreadedBinaryTree)。2.图文推导    如下图,把这棵二叉树进行中序遍历后,将所有的空指针域中的rchild,改为指向它的后继结点。于是我们就可以通过指针知道

数据结构-二叉树前中后层序遍历(顺序存储/链式存储&递归/非递归)

目录1二叉树的存储与建立1.1顺序存储结构1.1.1什么是顺序存储结构1.1.2代码案例1.2二叉链表存储1.2.1什么是链式存储结构1.2.2代码案例1.3顺序存储结构和链式存储结构对比1.4补充知识2二叉树的遍历2.1递归算法2.1.1顺序存储结构2.1.2链式存储结构2.2非递归算法2.2.1可能的疑难点3考研真题举例1二叉树的存储与建立1.1顺序存储结构1.1.1什么是顺序存储结构  二叉树的顺序存储结构是将二叉树中所有节点按层序遍历方式存放在一维数组中,从而实现对二叉树的存储和遍历。如果某个节点的左子节点或右子节点为空,那么对应的数组位置就存放一个特殊的值,比如null或者-1,表示