leetcode刷题-剑指offer-32题
题目(1)
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
例如:
给定二叉树: [3,9,20,null,null,15,7]
,
3
/ \
9 20
/ \
15 7
返回:
[3,9,20,15,7]
解答(1)
新手上路,才学疏浅,望斧正
//利用一个队列实现
class Solution {
public int[] levelOrder(TreeNode root) {
Queue<TreeNode> queue=new LinkedList<>();
ArrayList<Integer> list = new ArrayList<>();
if(root==null){
return new int[0];
}
queue.add(root);
while (!queue.isEmpty()){
TreeNode node=queue.poll();
list.add(node.val);
if(node.left!=null){
queue.add(node.left);
}
if(node.right!=null){
queue.add(node.right);
}
}
int[] res=new int[list.size()];
for(int i=0;i<list.size();i++){
res[i]=list.get(i);
}
return res;
}
}
题目(2)
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
例如:
给定二叉树: [3,9,20,null,null,15,7]
,
3
/ \
9 20
/ \
15 7
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
解答(2)
public class Solution2 {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> lists=new ArrayList<>();
Queue<TreeNode> queue=new LinkedList<>();
if(root==null) {
return lists;
}
queue.add(root);
while (!queue.isEmpty()){
List<Integer> tem=new ArrayList<>();
int leg=queue.size();
for (int i=0;i<leg;i++){
TreeNode node=queue.poll();
tem.add(node.val);
if(node.left!=null) {
queue.add(node.left);
}
if(node.right!=null){
queue.add(node.right);
}
}
lists.add(tem);
}
return lists;
}
}
题目(3)
请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。
例如:
给定二叉树: [3,9,20,null,null,15,7]
,
3
/ \
9 20
/ \
15 7
返回其层次遍历结果:
[
[3],
[20,9],
[15,7]
]
解答(3)
LinkedList:基于双向链表实现,只能顺序访问,但是可以快速地在链表中间插入和删除元素。不仅如此,LinkedList 还可以用作栈、队列和双向队列。
public class Solution2 {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> lists=new ArrayList<>();
Queue<TreeNode> queue=new LinkedList<>();
if(root==null) {
return lists;
}
queue.add(root);
while (!queue.isEmpty()){
LinkedList<Integer> tem = new LinkedList<>();
int leg=queue.size();
for (int i=0;i<leg;i++){
TreeNode node=queue.poll();
if(lists.size()%2==0){
tem.addLast(node.val);
}else {
tem.addFirst(node.val);
}
if(node.left!=null) {
queue.add(node.left);
}
if(node.right!=null){
queue.add(node.right);
}
}
lists.add(tem);
}
return lists;
}
}
本文作者:发呆鱼
本文链接:https://www.cnblogs.com/dyiblog/p/15793090.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步