给你二叉树的根节点 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