把二叉樹列印成多行

2021-09-16 19:06:02 字數 1021 閱讀 3859

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

//先將根節點入隊

queuepush(&q, root);

while (queueempty(&q))

}利用遞迴的方法進行先序遍歷,傳遞深度,遞迴深入一層擴容一層陣列,先序遍歷又保證了同層節點按從左到右入陣列,十分巧妙!!!

他在不斷地擴容,最後答案類似這樣,,}

多傳遞乙個當前結點所在層次就可以用前序遍歷實現了,學習了

假如現在元素是[1,2,3],當進入2時會建立乙個 arraylist,此時 depth = 2,size=2;當2遍歷完後會進入3,此時3 就不用建立 arraylist 了,因為 2,3是同一層的,並且此時 depth==size 。這個判斷是用來讓最左的元素建立 arraylist 就行了,而同一層後邊的元素共用這個 arraylist

利用遞迴的方法進行先序遍歷,傳遞深度,遞迴深入一層擴容一層陣列,先序遍歷又保證了同層節點按從左到右入陣列,十分巧妙!!!

**實現如下:

//用遞迴做的

public class solution 

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

}

'); (window.slotbydup = window.slotbydup || ).push(); })();

'); (window.slotbydup = window.slotbydup || ).push(); })();

把二叉樹列印成多行

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

把二叉樹列印成多行

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

把二叉樹列印成多行

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