32.从上到下打印二叉树
大约 1 分钟
32.从上到下打印二叉树
参考链接
LCR 149. 彩灯装饰记录 I - 力扣(LeetCode)
剑指 Offer 32 – I. 从上到下打印二叉树-跟着帅地玩转校招,刷爆各类算法题帅地玩Offer
个人尝试
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public int[] decorateRecord(TreeNode root) {
if (root == null) return new int[0];
List<Integer> list = new ArrayList<>();
Deque<TreeNode> queue = new ArrayDeque<>();
// offer(E e) 队列已满时,返回 false,而不是抛异常
// add(E e) 队列已满时,抛异常
queue.addLast(root);
while (!queue.isEmpty()) {
// poll() 队列为空时返回 null,而不是抛异常
// remove() 队列为空时抛异常
TreeNode tmp = queue.removeFirst();
list.add(tmp.val);
if (tmp.left != null) queue.addLast(tmp.left);
if (tmp.right != null) queue.addLast(tmp.right);
}
//这里可以用 Stream API
//int[] result = list.stream().mapToInt(Integer::intValue).toArray();
int[] result = new int[list.size()];
for (int i = 0; i < result.length; i++) {
result[i] = list.get(i);
}
return result;
}
}
优秀题解
class Solution {
public int[] decorateRecord(TreeNode root) {
if(root == null) return new int[0];
Queue<TreeNode> queue = new LinkedList<>(){{ add(root); }};
ArrayList<Integer> ans = new ArrayList<>();
while(!queue.isEmpty()) {
TreeNode node = queue.poll();
ans.add(node.val);
if(node.left != null) queue.add(node.left);
if(node.right != null) queue.add(node.right);
}
int[] res = new int[ans.size()];
for(int i = 0; i < ans.size(); i++)
res[i] = ans.get(i);
return res;
}
}
作者:Krahets
链接:https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/solutions/134956/mian-shi-ti-32-i-cong-shang-dao-xia-da-yin-er-ch-4/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。