給定乙個二叉樹,返回其按層次遍歷的節點值。 (即逐層地,從左到右訪問所有節點)。
例如:給定二叉樹: [3,9,20,null,null,15,7],
3 / \ 9 20 / \ 15 7
返回其層次遍歷結果:
[ [3], [9,20], [15,7] ]
陣列用於遍歷nextsize 用於記錄下一層的數量, size 記錄當前層的大小, 用乙個計數i 來記錄是否進入下一層,
當 i > size 時 進入下一層, 將 size 更新為 nextsize 的值, next size 更新為 size的兩倍, 當當前層還在缺失的時候
nextsize的值相應減少, 這樣就做到準確記錄每一層的值
public
class
demo50
double pow =0;
double base =2;
int i =0;
// 用來遍歷的計數
double size;
// 用來記錄當前數值
double nextsize =0;
// 用於記錄下一層的資料
/** * 還是有可能為空的情況存在,但是問題不大,就怕queue沒辦法新增進去
*/queue.
add(root)
; list
list =
newlinkedlist
<
>()
; size = math.
pow(base, pow)
; nextsize = math.
pow(base,pow+1)
;while
(!queue.
isempty()
) treenode temp = queue.
poll()
; i++
;// 計數加一
if(temp != null)
else
if(temp.left != null)
else
if(temp.right != null)
else
if(queue.
isempty()
)}return listlist;
}}
層次遍歷二叉樹
問題 假定根節點位於第0層 1.層次遍歷二叉樹 每層換行分開 2.層次遍歷二叉樹指定的某層 本文 例如 上圖中1.123 4567 82.第三層 78可以看出得出第二問的解,第一問迎刃而解了,所以從問題二下手 1.層次遍歷二叉樹指定的某層 可以得出這樣的乙個結論 遍歷二叉樹的第k層,相當於遍歷二叉樹...
二叉樹層次遍歷
題目描述 從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。思路 二叉樹的層次遍歷,利用棧的先進後出的特性。struct treenode class solution res.push back temp while m.empty m中是從左往右入棧,這裡把它反過來,s中是從右往左...
二叉樹層次遍歷
層次遍歷二叉樹,每一次儲存在list中,結果按從葉子層到根,從左到右的順序儲存 一 class solution return lists 相當於在先序的基礎上改進,level是每個node所在的層次。如果lists大小和level相等,說明開始新一層的儲存。如果不等,則直接把值存入相應層次的lis...