給定乙個二叉樹,返回其按層次遍歷的節點值。 (即逐層地,從左到右訪問所有節點)。
例如: 給定二叉樹:[3,9,20,null,null,15,7]
,
3返回其層次遍歷結果:/ \9 20
/ \
15 7
[通過像二叉樹的最大深度的演算法,乙個getlevel通過遞迴,求出當前節點的層級,然後給當前的層級的list加上當前節點的val。[3],
[9,20],
[15,7]
]
class solution我的問題:getlevel(root, list,-1);
return list;
}public static int getlevel(treenode root,list> list,int n)
}return layernum;
}public static void setlist(list> list,int layernum,treenode root)catch(indexoutofbound***ception e)
}}
用時12ms,是所有答案裡面基本最長時間的了。應該是異常那邊耗時過長。
思路一
用時1ms將每一層資料都放到佇列中,然後取出來,這裡要注意,先放左節點,再放右節點。
class solution思路二res.add(list);
}return res;
}}
用時2ms,跟我之前的思路一致,但**寫得比我的優雅。可以多學習。使用的是乙個hashmap作為容器,存放每個層的資料。
class solutionreturn lists;
}private void dfstree(treenode note, int level)
listlists = maps.get(level);
if (lists == null)
lists.add(note.val);
maxlevel = level > maxlevel ? level : maxlevel;
dfstree(note.left, level + 1);
dfstree(note.right, level + 1);
}}
層次遍歷二叉樹
問題 假定根節點位於第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...