草庐IT

四叉树

全部标签

二叉树相关操作---纯代码实现详解

目录前言(很重要)二叉树的概念二叉树的相关术语相关操作菜单  二叉树的构造 创建二叉树先序遍历二叉树   中序遍历二叉树 后序遍历二叉树 层次遍历二叉树 二叉树的深度 二叉树的叶子结点数 二叉树的结点数整体代码结果展示结束语前言(很重要)    大家好,今天给大家带来的是二叉树的相关操作,希望能够给大家带来帮助。        另外有很多小伙伴们在学习算法的时候,只去学习一些关于算法理论的知识,并不知道自己的代码实战能力如何,也不清楚到底对该算法的了解有多深,所以在这里小张给大家推荐一个很棒的平台,在这里有很多的面试和算法题,也有很多的面试和求职的机会,大家可以点击下方链接进入牛客网刷算法真题

二叉树(下)+Leetcode每日一题——“数据结构与算法”“对称二叉树”“另一棵树的子树”“二叉树的前中后序遍历”

各位CSDN的uu们你们好呀,今天小雅兰的内容仍然是二叉树和Leetcode每日一题,下面,就让我们进入二叉树的世界吧!!!  这个题目需要重新定义一个函数,函数参数需要有左子树和右子树,题目所给定的函数无法解决问题。bool_isSymmetric(structTreeNode*leftRoot,structTreeNode*rightRoot){//左子树和右子树同时为空if(leftRoot==NULL&&rightRoot==NULL){returntrue;}//一棵树为空,另一棵树不为空if((leftRoot==NULL&&rightRoot!=NULL)||(leftRoot!

算法刷题Day 16 二叉树的最大深度+N叉树的最大深度+二叉树的最小深度+完全二叉树的节点个数

104.二叉树的最大深度递归法classSolution{public:intmaxDepth(TreeNode*root){if(root==nullptr)return0;returnmax(maxDepth(root->left),maxDepth(root->right))+1;}};迭代法使用层序的方法,相对比较好理解classSolution{public:intmaxDepth(TreeNode*root){if(!root)return0;queueTreeNode*>que;que.push(root);intmaxD=0;while(!que.empty()){intlen

算法刷题Day18 找树左下角的值+路径总和+从中序与后序遍历构造二叉树

Day18二叉树513.找树左下角的值一眼层序遍历层序遍历classSolution{public:intfindBottomLeftValue(TreeNode*root){if(!root)return-1;queueTreeNode*>que;que.push(root);inttarget;while(!que.empty()){intlen=que.size();for(inti=0;ilen;++i){TreeNode*cur=que.front();que.pop();if(i==0){target=cur->val;}if(cur->left)que.push(cur->lef

数据结构--二叉树

前言    我相信很多朋友跟我一样,最近在疲惫的学习状态下有时会产生效率低下,注意力不集中的情况,随着就是学习进度缓慢,知识点掌握不牢靠,俗称半吊子,学习任务没有完成时又会恶性循环。我建议的是在疲惫下坚持,通过减少一些任务量,又通过提高效率获取更多休息时间,最后给自己放个小假,放空一下自己的疲惫灵魂。不要在疲惫的情况下恶性循环,在每次进行学习尽量投入。我想通过一句名言激励每位朋友:平凡的脚步也能够走完伟大的行程。        该文章主要是围绕着二叉树的进行讲解,首先要理解树的概念和结构,二叉树又是树中特别重要的类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换

算法刷题Day 17 平衡二叉树+二叉树的所有路径+左叶子之和

Day17二叉树计算左右两棵子树的高度,如果有一个高度是-1(有一棵子树不平衡),直接返回-1,否则计算高度差,判断是否不平衡110.平衡二叉树classSolution{inthelper(TreeNode*root){if(!root)return0;intleftDepth=helper(root->left);intrightDepth=helper(root->right);if(leftDepth==-1||rightDepth==-1)return-1;elseif(abs(leftDepth-rightDepth)>1){return-1;}else{returnmax(lef

华为OD机试真题 Java 实现【构建二叉树】【2023 Q1 | 100分】

        所有题目均有五种语言实现。C实现目录、C++实现目录、Python实现目录、Java实现目录、JavaScript实现目录题目请按下列描达构建一颗二叉树,并返回该树的根节点:1、先创建值为-1的根结点,根节点在第0层;2、然后根据operations依次添加节点:operations[i] =[height,index]表示对第height层的第index个节点node,添加值为i的子节点:->若node无[左子节点],则添加左子节点->若node有[左子节点],但无[右子节点],则添加右子节点:否则不作任何外理。height、index均从0开始计数;index指所在层的创建

华为OD机试真题 Java 实现【构建二叉树】【2023 Q1 | 100分】

        所有题目均有五种语言实现。C实现目录、C++实现目录、Python实现目录、Java实现目录、JavaScript实现目录题目请按下列描达构建一颗二叉树,并返回该树的根节点:1、先创建值为-1的根结点,根节点在第0层;2、然后根据operations依次添加节点:operations[i] =[height,index]表示对第height层的第index个节点node,添加值为i的子节点:->若node无[左子节点],则添加左子节点->若node有[左子节点],但无[右子节点],则添加右子节点:否则不作任何外理。height、index均从0开始计数;index指所在层的创建

算法刷题Day 15 二叉树的层序遍历+翻转二叉树+对称二叉树

Day15二叉树102.二叉树的层序遍历层序遍历二叉树需要借助到队列classSolution{public:vectorvectorint>>levelOrder(TreeNode*root){if(root==nullptr)return{};queueTreeNode*>que;vectorvectorint>>rst;que.push(root);TreeNode*cur;while(!que.empty()){intlen=que.size();vectorint>level;while(len--){cur=que.front();que.pop();level.push_back

刷题日记01:序列化和反序列化二叉树

一.概念理解:题目如下:https://leetcode.cn/problems/xu-lie-hua-er-cha-shu-lcof/何为序列化?序列化我们可以理解为层序遍历的结果,即将所有的结点的信息,按照层序遍历的结果拼接到一个字符串中,但是与一般的层序遍历有所不同的是:序列化要输出所有的结点信息,而层序遍历一般不会对null结点进行输出。如下:二.解决思路:1.序列化:既然与层序遍历存在相同之处,那么解决思路同样存在相同之处了:我们解决层序遍历的题目时,一般利用辅助队列空间,即创建一个存放结点的LinkedList,判断当前结点是否非空,不为空则加入到队列中,同时设置一个计数器:不断记