首页 > 其他分享 >4月16日leetcode二叉树前序遍历创建字符串,二叉树的层序遍历

4月16日leetcode二叉树前序遍历创建字符串,二叉树的层序遍历

时间:2023-04-17 21:23:30浏览次数:41  
标签:遍历 递归 队列 前序 vector 二叉树 节点

给你二叉树的根节点 root ,请你采用前序遍历的方式,将二叉树转化为一个由括号和整数组成的字符串,返回构造出的字符串。

空节点使用一对空括号对 "()" 表示,转化后需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/construct-string-from-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

此题比较简单,只需要用递归去前序遍历二叉树,在读取二叉树部分的地方进行字符串的输出,即可。所有二叉树的遍历可分为三个部分,输出部分和递归进入左子树与递归进入右子树,它们的顺序取决于遍历的方式。这道题比较特殊的地方在于要在将节点的左右子树用括号括起来,且若左子树为空架空括号,若右子树为空不加括号。

可以用这道题再次回顾熟悉递归的过程,递归是先完成递归结束条件后一步一步向上返回的过程,若遇到递归结束的条件,则返回递归的上一层,执行相应节点的环节,若是先序则先访问此节点的数据,在进入此节点的左树递归,后序和中序也是如此,直到访问完所有的节点。

2给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。(出自力扣)

此题与一般的层序遍历不同,此题要求用一个vector<vector<int>>接受遍历的结果,其中内层vector接受二叉树的每一层数据。

解题思路:首先利用队列层序遍历二叉树,利用循环控制队列的入队列和出队列,先将根节点入队列,在循环中每当出队列时将此结点的两个子树结点带入队列中,若子树根结点为空则不进入队列,直到队列为空表示层序遍历结束。

那么如何将每层的节点准确的放入vector中的每一个vector中呢,观察每个节点出队列的规律可以发现,出队列是按照层序出的,且每当上一层数据全部出队列后,下一层数据已经入队列了,且队列中的元素刚好等于下一层的元素,那么可以在外层循环中嵌套一层循环控制队列一次将此层的数据全部出队列,次数为进入外部循环时队列的的数据元素量。此变量可以有队列的size()函数获得,然后将每次内循环的数据尾插到一个定义好的vector中,当内循环进行完成时将这个vector又尾插到最终要返回的双重vector中。此时题就完成了。

 

标签:遍历,递归,队列,前序,vector,二叉树,节点
From: https://www.cnblogs.com/qjwxlj/p/17327556.html

相关文章

  • LeetCode Top100:二叉树的中序遍历(Python)
     给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 示例1:输入:root=[1,null,2,3]输出:[1,3,2]示例2:输入:root=[]输出:[]示例3:输入:root=[1]输出:[1] 提示:树中节点数目在范围 [0,100] 内-100<=Node.val<=100 以下是一个Python程序,......
  • 二叉树中和为某一值的路径
    描述输入一颗二叉树的根节点root和一个整数expectNumber,找出二叉树中结点值的和为expectNumber的所有路径。1.该题路径定义为从树的根结点开始往下一直到叶子结点所经过的结点2.叶子节点是指没有子节点的节点3.路径只能从父节点到子节点,不能从子节点到父节点4.总节点数目为n如二叉......
  • 团体天梯练习 L2-011 玩转二叉树
    L2-011玩转二叉树给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数\(N(≤30)\),是二叉树中结点的个数。第二行给......
  • 根据前序遍历和中序遍历重建二叉树
    LeetCode105.给定两个整数数组preOrder和inOrder,其中preOrder是二叉树的先序遍历,inOrder是二叉树的中序遍历,请构造二叉树并返回其根节点/***Definitionforabinarytreenode.*publicclassTreeNode{*publicintval;*publicTreeNodeleft;*......
  • Uva--679 Dropping Balls(二叉树的编号)
    记录23:282023-4-16https://onlinejudge.org/external/6/679.pdfreference:《算法竞赛入门经典第二版》例题6-6二叉树,这里是完全二叉树,使用模拟的方式应该会TLE(虽然我用模拟的方式也TLE了,但不是这个原因,下面会提到原因)不用模拟的方式,转换思路,使用递归的方式去思考。这里......
  • 平衡二叉树——C语言描述——创建,增加结点
    平衡二叉树——C语言描述——创建,增加结点目录平衡二叉树——C语言描述——创建,增加结点0测试用例框架1定义2数据结构2增加平衡二叉树的结点(1)代码(2)测试用例0测试用例框架https://blog.csdn.net/m0_59469991/article/details/127137119?csdn_share_tail=%7B%22type%22%3A%2......
  • 数据结构-->二叉树 OJ_01
    经过前几期浴血奋战!!二叉树便要进入应用阶段了!今天,为大家带来几道OJ题的讲解!1.单值二叉树如果二叉树每个结点都具有相同的值,那么该二叉树就是单值二叉树只有给定的树是单值二叉树时,才会返回true,否则返回false下面为了方便理解,进行图解举例:>有上述的两种情况,其中还需要考虑到......
  • 算法-二叉树的构造
    namespaceBinary;publicclassBinaryTree{publicNode<char>Head{get;privateset;}privatestringcStr{get;set;}publicBinaryTree(stringconstructStr){this.cStr=constructStr;th......
  • 遍历加if条件选择
    一共有5个村民,编号分别为A、B、C、D、E,他们其中一个在村口看到过锦鲤。5个村民各自发言:    A:我和E都没有看到过锦鲤    B:锦鲤是被C和E其中一个看到的    C:锦鲤是被我和D其中一个看到的    D:B和C都没有看到过锦鲤    E:我没有看到锦鲤已......
  • 二叉树遍历算法分析
    二叉树遍历算法分析前/中/后序遍历算法可以发现这三种遍历算法只有一行代码,也就是输出结点数据域的位置不同前序遍历是先输出数据域再递归到左孩子和右孩子中序遍历是先递归到左孩子等返回的时候输出数据域再递归到右孩子后序遍历是指先递归到左孩子,然后递归到右孩子,最后......