当前位置:网站首页>【JZOF】77 Print binary tree in zigzag
【JZOF】77 Print binary tree in zigzag
2022-08-10 00:34:00 【sigh】
题目描述:
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推.
解法:
- The first solution uses theJDK的Collections.reverse,Reverse the collection.Do not use this tool if asked during the interview,则需要换一种写法.
public class LeftRightReverseOrder {
public ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {
ArrayList<ArrayList<Integer>> ret = new ArrayList<>();
Queue<TreeNode> queue = new LinkedList<>();
queue.add(pRoot);
boolean reverse = false;
while (!queue.isEmpty()) {
ArrayList<Integer> list = new ArrayList<>();
int cnt = queue.size();
while (cnt-- > 0) {
TreeNode node = queue.poll();
if (node == null)
continue;
list.add(node.val);
queue.add(node.left);
queue.add(node.right);
}
if (reverse)
Collections.reverse(list);
reverse = !reverse;
if (list.size() != 0)
ret.add(list);
}
return ret;
}
}
- 第二种解法:
Do it in two stacks.
stack1Store odd-numbered layer nodes,The child nodes of the odd-numbered layer nodes are in the order of left and rightpush到stack2.
slack2Store even-numbered layer nodes.The child nodes of even-numbered nodes are in right-left orderpush到stack1.
public class Solution {
public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
ArrayList<ArrayList<Integer> > res = new ArrayList<ArrayList<Integer> >();
if (pRoot == null) {
return res;
}
// 奇数层
Stack<TreeNode> s1 = new Stack<>();
// 偶数层
Stack<TreeNode> s2 = new Stack<>();
s1.push(pRoot);
while (!s1.isEmpty() || !s2.isEmpty()) {
ArrayList<Integer> row = new ArrayList<>();
if (!s1.isEmpty()) {
while (!s1.isEmpty()) {
TreeNode node = s1.pop();
row.add(node.val);
if (node.left != null) {
s2.push(node.left);
}
if (node.right != null) {
s2.push(node.right);
}
}
} else {
while (!s2.isEmpty()) {
TreeNode node = s2.pop();
row.add(node.val);
if (node.right != null) {
s1.push(node.right);
}
if (node.left != null) {
s1.push(node.left);
}
}
}
res.add(row);
}
return res;
}
}
边栏推荐
猜你喜欢
位图的基本原理以及应用
Technology feast!Huayun Data brings six topics to OpenInfra Days China
6款跨境电商常用工具汇总
Mysql集群 ShardingSphere
Sun Zhengyi lost 150 billion: it was expensive at the beginning
Chapter 15 HMM模型
torch.distributed多卡/多GPU/分布式DPP(二)——torch.distributed.all_reduce(reduce_mean)&barrier&控制进程执行顺序&随机数种子
少儿编程 电子学会图形化编程等级考试Scratch三级真题解析(判断题)2022年6月
Qt message mechanism and events
How to know the computer boot record?
随机推荐
HBuilder X 不能运行到内置终端
70. 爬楼梯进阶版
VR全景结合小程序,为线上电商更好的服务
2022-08-09 mysql/stonedb-subquery performance improvement-introduction
直播预告 | ICML 2022 11位一作学者在线分享神经网络,图学习等前沿研究
How to match garbled characters regularly?
Leetcode 701. 二叉搜索树中的插入操作
【励志】名言警句
Leetcode 236. 二叉树的最近公共祖先
iNFTnews | 迪士尼如何布局Web3
2022牛客暑期多校训练营6(ABGIJM)
JS--hashchange事件--使用/教程
五分钟商学院(基础---商业篇)
How to know the computer boot record?
tiup cluster stop
探索TiDB Lightning源码来解决发现的bug
PyQt5: Getting Started Tutorial
函数习题(下)
金仓数据库 KingbaseGIS 使用手册(6.2. 管理函数)
Day 12 of learning to program