把二叉樹列印成多行 js

2021-09-24 05:28:57 字數 619 閱讀 9842

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

我們需要分割,在行與行之間進行分割。如何分割呢?肯定要知道個數才能分割。

可是我又如何知道這一行有多少個呢?

這就是重點了,我們可以通過遍歷上一層,通過它們的子樹就可以知道這一層有多少個節點了。

當然我們還需要有乙個變數來記錄這一層已經列印了多少個節點了。

所以我們需要乙個佇列+兩個個變數。

function

print

(proot)

queue.

push

(proot)

;let nextlevel =0;

// 下一層節點個數

let tobeprinted =1;

// 這一層還有多少個節點要列印

let list =

;// 存放每一層節點

while

(queue.length)

if(pnode.right !==

null

) tobeprinted--;if

(tobeprinted ===0)

}return res;

}

把二叉樹列印成多行

從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。中序遍歷,使用佇列,將每一行的元素依次壓入佇列,每將佇列中元素彈出乙個就將其左右子節點壓入佇列。在每一行的開始節點時,佇列中元素的個數就是下一行節點的個數,通過計數取出該行所有元素。struct treenode class solut...

把二叉樹列印成多行

從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。先將根節點入隊 queuepush q,root while queueempty q 利用遞迴的方法進行先序遍歷,傳遞深度,遞迴深入一層擴容一層陣列,先序遍歷又保證了同層節點按從左到右入陣列,十分巧妙!他在不斷地擴容,最後答案類似這樣...

把二叉樹列印成多行

從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。先將根節點入隊 queuepush q,root while queueempty q 利用遞迴的方法進行先序遍歷,傳遞深度,遞迴深入一層擴容一層陣列,先序遍歷又保證了同層節點按從左到右入陣列,十分巧妙!他在不斷地擴容,最後答案類似這樣...