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

2022-06-29 05:42:09 字數 1470 閱讀 5338

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

按層次輸出二叉樹

* 訪問根節點,並將根節點入隊。

* 當佇列不空的時候,重複以下操作。

* 1、彈出乙個元素。作為當前的根節點。

* 2、如果根節點有左孩子,訪問左孩子,並將左孩子入隊。

* 3、如果根節點有右孩子,訪問右孩子,並將右孩子入隊。

public

static

void

main(string args) ;

solution8 solution8 = new

solution8();

treenode treenode = solution8.createbinarytreebyarray(array, 0);

for(arraylist list :

solution8.print(treenode))

}/*** 層次遍歷

** [

@param

proot 根節點

* @return

](/profile/547241) arraylists

*/arraylist>print(treenode proot)

//使用佇列,先進先出

queue queue = new

linkedlist();

//存放每行的列表

arraylist arraylist = new

arraylist();

//記錄本層列印了多少個

int start = 0;

//記錄下層打幾個

int end = 1;

queue.add(proot);

while (!queue.isempty())

if (temp.right != null

)

//判斷本層列印是否完成

if (start ==end)

}return

arraylists;

}private treenode createbinarytreebyarray(int array, int

index)

return

tn; }

public

class

treenode

}

arraylist

>print(treenode proot)

private

void depth(treenode root, int depth, arraylist>list)

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

從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。二叉樹的層序遍歷高階版 基礎版 二叉樹的層序遍歷,乙個陣列輸出,不用記錄當前層有沒有遍歷完 基礎版層序遍歷 高階版 本題,要記錄當前層有沒有遍歷完 高階版plus 按之字形列印,不但要記錄當前層有沒有遍歷完,還要記錄當前遍歷的層數 之字...

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

從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。從上到下列印二叉樹我們知道用佇列可以實現,但是如果多行列印怎麼做呢?我們需要分割,在行與行之間進行分割。如何分割呢?肯定要知道個數才能分割。可是我又如何知道這一行有多少個呢?這就是重點了,我們可以通過遍歷上一層,通過它們的子樹就可以知道...

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

題目 從上到下安層列印二叉樹,同一層的結點按從左到右的順序列印,每一層列印一行。例如,圖 1 中二叉樹以及列印結果為 這個題其實很簡單,我們只需要設定兩個變數就可以搞定。乙個變數表示當前層中還沒有列印的結點數,另乙個變數表示下一層結點的數目。具體實現 如下 include include using...