183132I32II32III24
Posted 保护眼睛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了183132I32II32III24相关的知识,希望对你有一定的参考价值。
剑指offer
剑指 Offer 18. 删除链表的节点
public ListNode deleteNode(ListNode head, int val)
if (head == null)
return null;
ListNode cur = head;
ListNode pre = new ListNode(-1);
if (val != head.val)
pre.next = head;
else
pre.next = head.next;
return pre.next;
while (cur != null)
if (cur.val == val)
pre.next = cur.next;
break;
else
pre = cur;
cur = cur.next;
return head;
public ListNode deleteNode2(ListNode head, int val)
if (head == null) return null;
if (head.val == val)
return head.next;
else
head.next = deleteNode2(head.next, val);
return head;
剑指 Offer 24. 反转链表
public ListNode swapPairs(ListNode head)
ListNode dummy = new ListNode(-1);
dummy.next = head;
ListNode cur = dummy;
while (cur.next != null && cur.next.next != null)
ListNode node1 = cur.next;
ListNode node2 = cur.next.next;
cur.next = node2;
node1.next = node2.next;
node2.next = node1;
cur = node1;
return dummy.next;
剑指 Offer 31. 栈的压入、弹出序列
public boolean validateStackSequences(int[] pushed, int[] popped)
Stack<Integer> stack = new Stack<>();
int i = 0;
for (int val : pushed)
stack.push(val);
while (!stack.isEmpty() && stack.peek() == popped[i])
stack.pop();
i++;
return stack.isEmpty();
剑指 Offer 32 - I. 从上到下打印二叉树
public int[] levelOrder(TreeNode root)
List<Integer> res = new ArrayList<>();
if (root == null)
return tran(res);
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while (!queue.isEmpty())
TreeNode cur = queue.poll();
res.add(cur.val);
if (cur.left != null)
queue.offer(cur.left);
if (cur.right != null)
queue.offer(cur.right);
return tran(res);
public int[] tran(List<Integer> list)
int size = list.size();
int[] res = new int[size];
for (int i = 0; i < size; i++)
res[i] = list.get(i);
return res;
剑指 Offer 32 - II. 从上到下打印二叉树
public List<List<Integer>> levelOrder(TreeNode root)
List<List<Integer>> res = new ArrayList<>();
if (root == null) return res;
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while (!queue.isEmpty())
int size = queue.size();
List<Integer> list = new ArrayList<>();
while (size != 0)
TreeNode cur = queue.poll();
list.add(cur.val);
if (cur.left != null)
queue.offer(cur.left);
if (cur.right != null)
queue.offer(cur.right);
size--;
res.add(list);
return res;
剑指 Offer 32 - III. 从上到下打印二叉树
boolean flag = true;
public List<List<Integer>> levelOrder(TreeNode root)
List<List<Integer>> res = new ArrayList<>();
if (root == null) return res;
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while (!queue.isEmpty())
int size = queue.size();
List<Integer> list = new ArrayList<>();
for (int i = 0; i < size; i++)
TreeNode cur = queue.poll();
list.add(cur.val);
if (cur.left != null)
queue.offer(cur.left);
if (cur.right != null)
queue.offer(cur.right);
if (flag)
res.add(list);
flag = false;
else
Collections.reverse(list);
res.add(list);
flag = true;
return res;
public List<List<Integer>> levelOrder(TreeNode root)
List<List<Integer>> res = new ArrayList<>();
if (root == null) return res;
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while (!queue.isEmpty())
int size = queue.size();
LinkedList<Integer> tmpList = new LinkedList<>();
for (int i = 0; i < size; i++)
TreeNode cur = queue.poll();
if (res.size() % 2 != 0)
tmpList.addFirst(cur.val);
else
tmpList.addLast(cur.val);
if (cur.left != null)
queue.offer(cur.left);
if (cur.right != null)
queue.offer(cur.right);
res.add(tmpList);
return res;
以上是关于183132I32II32III24的主要内容,如果未能解决你的问题,请参考以下文章
剑指 Offer 32 - III. 从上到下打印二叉树 III(java解题)
LeetCode1482. 制作 m 束花所需的最少天数 / 剑指 Offer 32 . 从上到下打印二叉树I/II/III