從上到下列印二叉樹

2021-10-09 05:58:50 字數 1030 閱讀 8125

例如:

給定二叉樹: [3,9,20,null,null,15,7],

3/ \

9 20

/ \

15 7

返回:[3,9,20,15,7]

2.1  思路分析

題目要求的二叉樹從上到下列印(即按層列印),又稱為二叉樹的廣度優先搜尋(bfs)。

bfs通常借助佇列的先入先出特性來實現。

2.2  演算法流程

特例處理:當樹的根結點為空,則直接返回空列表[ ];

初始化:列印結果列表res = [ ],包含根結點的佇列queue = [root];

bfs迴圈:當佇列queue為空時跳出:

1.出隊:隊首元素出隊,記為node;

2.列印:將node.val新增至列表tmp尾部;

3.新增子結點:若node的左(右)子結點不為空,則將左(右)子結點加入到佇列;

4.返回值:返回列印結果列表res即可。

2.3  **實現

class solution };

arraylistans = new arraylist<>();

while(!queue.isempty())

if(node.right != null)

}int res = new int[ans.size()];

for(int i = 0; i < ans.size(); i++)

return res;

}}

2.4  複雜度分析

從上到下列印二叉樹

原理是二叉樹的層次遍歷 可以用乙個佇列輔助,先將二叉樹根節點入隊,然後出隊,將該節點存入vector中,之後判斷根節點的左子樹和右子樹是否為空,若不為空,依次入隊。然後出隊,再訪問出隊的結點是否有左右子樹,以此類推。核心 vectorprintfromtoptobottom treenode roo...

從上到下列印二叉樹

從上到下列印出二叉樹的每個節點,同一層的節點按照從左到右的順序列印。例如 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回 3,9,20,15,7 解題思路 演算法流程 特例處理 當樹的根節點為空,則直接返回空列表 初始化 列印結果列表 res 包含根節點的佇列 q...

從上到下列印二叉樹

題目描述 從上往下列印出二叉樹的每個節點,同層節點從左至右列印。例項 輸入 輸出 5,4,3,2,1 思路 這裡本質上就是層序遍歷二叉樹,需要輔助列表儲存按層序輸出的節點。符合佇列,從一邊進,另一邊取出。class solution 返回從上到下每個節點值列表,例 1,2,3 defprintfro...