用層次遍歷把二叉樹列印成多行

2021-10-07 23:44:05 字數 793 閱讀 5454

這是一題關於樹的遍歷的題目,解題思路是在二叉樹的層次遍歷演算法中稍作修改,讓二叉樹的每一層都能儲存在不同的集合中。

以下是解題**,所有的解題思路都寫在**中

using system.collections.generic;

/*public class treenode

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

class

solution

queue.

enqueue

(proot)

;//先把最開始的根節點入隊

while

(queue.count!=0)

if(temp.right!=

null

)//注意,因為當前層節點的數量已經固定了(count)

//故新加入的這些節點屬於下一層不會被這次遍歷出隊

row.

add(temp.val)

;//剛才出隊的節點放入集合中

count--

;//當前層的節點數量減1

}//迴圈結束,說明當前層的節點值都全部已經被加入lisr集合中了

treelist.

add(row)

;//把這一層的list放入treelist中

//開始下一層的遍歷

}return treelist;

}}

60 把二叉樹列印成多行(層次遍歷)

從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。遞迴,節點加入對應層數的list中 public class solution public void depth treenode root,int depth,arraylist list if depth list.size li...

把二叉樹列印成多行

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

把二叉樹列印成多行

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