劍指offer-22、從上往下打印?叉樹
題?描述
從上往下打印出?叉樹的每個節點,同層節點從左?右打印。

思路及解答
這個其實就是標準的迭代遍歷了
使用隊列(Queue)數據結構實現層次遍歷:
- 將根節點入隊
- 循環執行以下操作直到隊列為空:
- 出隊一個節點并訪問
- 將該節點的左子節點入隊(如果存在)
- 將該節點的右子節點入隊(如果存在)
/**
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
ArrayList<Integer> result = new ArrayList<>();
if (root == null) {
return result; // 空樹直接返回空列表
}
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root); // 根節點入隊
while (!queue.isEmpty()) {
TreeNode current = queue.poll(); // 出隊當前節點
result.add(current.val); // 訪問節點值
// 左子節點入隊
if (current.left != null) {
queue.offer(current.left);
}
// 右子節點入隊
if (current.right != null) {
queue.offer(current.right);
}
}
return result;
}
}
- ?時間復雜度?:O(n),每個節點被訪問一次
- ?空間復雜度?:O(n),隊列最多存儲n個節點
本文來自在線網站:seven的菜鳥成長之路,作者:seven,轉載請注明原文鏈接:www.seven97.top

浙公網安備 33010602011771號