今天的題目為102.Binary Tree Level Order Traversal,他再叫我們寫出一段程式碼,並且層級地遍歷一棵二元樹,然後把每一層的節點值分開儲存
以下為程式碼以及解說:
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> result = new ArrayList<>();
//這是用來儲存每一層的節點值
if (root == null) return result;
//如果樹根是空的則回傳result
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
//使用佇列來儲存每一層的節點,從根節點開始
while (!queue.isEmpty()) {
int levelSize = queue.size(); // 當前層的節點數量
List<Integer> level = new ArrayList<>();
for (int i = 0; i < levelSize; i++) {
TreeNode node = queue.poll(); // 取出節點
level.add(node.val); // 加入該層的結果
if (node.left != null) queue.offer(node.left); // 加入左子節點
if (node.right != null) queue.offer(node.right); // 加入右子節點
}
result.add(level); // 加入整層結果
}
return result; //回傳最後結果
}
}