劍指offer 把二叉樹列印成多行 43 67

2021-10-23 08:22:46 字數 743 閱讀 5252

從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。

非常經典的一道二叉樹的題目,做這道題之前需要掌握二叉樹的思想和bfs(廣度優先搜尋、佇列思想)

我們可以回顧一下最基本的層次遍歷,我們是用乙個佇列來進行儲存初始root結點,然後依次放入root的左子樹和右子樹,迴圈上述操作

while

(!queue.

isempty()

)if(treenode.right != null)

}

對於這道題,我們需要分層,所以我們需要考慮,怎麼讓一層的數字輸出在同一list中,當我們把root放入佇列時,目前的佇列長度為1,我們按照佇列的長度來進行迴圈queue.add(treenode.left);queue.add(treenode.right);,目前佇列中的長度為2,我們繼續按照佇列的長度進行迴圈,依次來遍歷還整個二叉樹。

public

class

solution

queue.

offer

(proot)

;while

(!queue.

isempty()

)if(treenode.right != null)

} list.

add(list2);}

return list;

}}

劍指Offer 把二叉樹列印成多行

題目描述 從上到下按層列印二叉樹,同層結點按從左向右的順序列印,每一層列印到一行。例如8 6 10 5 7 9 11 類似於按層遍歷二叉樹,利用廣度優先遍歷的思想,選擇stl的佇列。step1 把起始節點放到佇列當中。step2 每一次從佇列頭部取出乙個結點,遍歷過這個節點後,把它能到達的其他節點 ...

劍指offer 把二叉樹列印成多行

從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。思路就是借助兩個輔助單向佇列queue來實現,暫且叫他們help1和help2。先把根節點壓入help1,然後依次取出help1裡面的元素,將其值放入儲存結果的vector中,並將其左右節點壓入help2,直至help1為空。此時hel...

劍指offer 把二叉樹列印成多行

從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。用佇列來實現按行列印,但是由於要分層列印,需要區分每一行,所以要用乙個tmp來記錄每層列印出的結果 coding utf 8 class treenode def init self,x self.val x self.left non...