当前位置:网站首页>【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;
}
}
边栏推荐
猜你喜欢

Mysql/stonedb - slow SQL - 2022-08-09 Q16 analysis

Mysql集群 ShardingSphere

Chapter 15 HMM模型

Has your phone ever been monitored?

shader学习笔记(五)

安踏携手华为运动健康共同验证冠军跑鞋 创新引领中国体育

Qt message mechanism and events

matplotlib散点图自定义坐标轴(文字坐标轴)

中国SaaS企业排名,龙头企业Top10梳理

The latest "Grain Academy Development Tutorial" in 2022: 10 - Front-end payment module
随机推荐
带着昇腾去旅行:一日看尽金陵城里的AI胜景
国内十大活跃报表 BI 产品深度对比及点评
上海一科技公司刷单被罚22万,揭露网络刷单灰色产业链
Leetcode 530. 二叉搜索树的最小绝对差
全面解析FPGA基础知识
JS--hashchange事件--使用/教程
[Cloud Native] This article explains how to add Tencent Crane to Kubevela addon
函数习题(下)
Redis集群
Basic operations of xlrd and xlsxwriter
Force Buckle: 474. Ones and zeros
【JZOF】77按之字形打印二叉树
shell array
【JZOF】82二叉树中和为某一值的路径(一)
VR全景结合小程序,为线上电商更好的服务
力扣:322. 零钱兑换
对象深复制,面试题
Snap: 322. Change of Change
【哲理】事教人
外包的水有多深?腾讯15k的外包测试岗能去吗?