每日编程中遇到任何疑问、意见、建议请公众号留言或直接撩Q474356284(备注每日编程)
今日问题:
给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。
例如:给定二叉树 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回锯齿形层次遍历如下:
[
[3],
[20,9],
[15,7]
]
解决方法:
思路:
BFS思想,层次遍历的变形。
定义一个flag,如果flag为false则本层次从左至右遍历
如果flag为true则本层次从右至左遍历
C++代码:
Java代码:
明日题目预告:
根据二叉树创建字符串
你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。
空节点则用一对空括号 "()" 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。
示例 1:
输入:二叉树: [1,2,3,4]
1
/ \
2 3
/
4
输出:"1(2(4))(3)"
解释:原本将是“1(2(4)())(3())”,
在你省略所有不必要的空括号对之后,
它将是“1(2(4))(3)”。
示例 2:
输入:二叉树: [1,2,3,null,4]
1
/ \
2 3
\
4
输出:"1(2()(4))(3)"
解释:和第一个示例相似,
除了我们不能省略第一个对括号来中断输入和输出之间的一对一映射关系。