public class LevelOrder {
/**【題目一:】
* 從上到下打印出二叉樹的每個節(jié)點,同一層的節(jié)點按照從左到右的順序打印。
* @param root
* @return 一維數組
*/
public int[] levelOrder(TreeNode root) {
if(root == null) return new int[0];
Queue<TreeNode> queue = new LinkedList<>();
ArrayList<Integer> ans = new ArrayList<>();
if(root != null) queue.add(root);
while(!queue.isEmpty()) {
TreeNode node = queue.poll();
ans.add(node.val);
if(node.left != null) queue.add(node.left);
if(node.right != null) queue.add(node.right);
}
int[] res = new int[ans.size()];
for(int i = 0; i < ans.size(); i++)
res[i] = ans.get(i);
return res;
}
/**【題目二:】
* 從上到下按層打印二叉樹,同一層的節(jié)點按從左到右的順序打印,每一層打印到一行若治。
* @param root
* @return 二維數組 (BFS)
*/
public List<List<Integer>> levelOrder2(TreeNode root) {
Queue<TreeNode> queue = new LinkedList<>();
List<List<Integer>> res = new ArrayList<>();
if(root != null) queue.add(root);
while(!queue.isEmpty()) {
List<Integer> tmp = new ArrayList<>();
for(int i = queue.size(); i > 0; i--) {
TreeNode node = queue.poll();
tmp.add(node.val);
if(node.left != null) queue.add(node.left);
if(node.right != null) queue.add(node.right);
}
res.add(tmp);
}
return res;
}
/**【題目三:】
* 從上到下按"之"字形打印二叉樹,奇數層從左到右打印某筐,偶數層從右到左打印雹嗦,每一層打印到一行庸毫。
* @param root
* @return 二維數組
* 形如:
1
2 3
4 5 6 7 輸出{{1},{3,2},{4,5,6,7}}
*/
public List<List<Integer>> levelOrder3(TreeNode root) {
Queue<TreeNode> queue = new LinkedList<>();
List<List<Integer>> res = new ArrayList<>();
if (root != null) queue.add(root);
while (!queue.isEmpty()) {
LinkedList<Integer> tmp = new LinkedList<>();
for (int i = queue.size(); i > 0; i--) {
TreeNode node = queue.poll();
if (res.size() % 2 == 0) tmp.addLast(node.val); // 偶數層 -> 隊列頭部
else tmp.addFirst(node.val); // 奇數層 -> 隊列尾部
if (node.left != null) queue.add(node.left);
if (node.right != null) queue.add(node.right);
}
res.add(tmp);
}
return res;
}
}
關于二叉樹打印的算法題匯總
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門挠乳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人姑躲,你說我怎么就攤上這事睡扬。” “怎么了黍析?”我有些...
- 文/不壞的土叔 我叫張陵卖怜,是天一觀的道長。 經常有香客問我阐枣,道長马靠,這世上最難降的妖魔是什么奄抽? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮甩鳄,結果婚禮上逞度,老公的妹妹穿的比我還像新娘。我一直安慰自己娩贷,他們只是感情好第晰,可當我...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著彬祖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪品抽。 梳的紋絲不亂的頭發(fā)上储笑,一...
- 文/蒼蘭香墨 我猛地睜開眼淡喜,長吁一口氣:“原來是場噩夢啊……” “哼秕磷!你這毒婦竟也來了?” 一聲冷哼從身側響起炼团,我...
- 正文 年R本政府宣布,位于F島的核電站线脚,受9級特大地震影響赐稽,放射性物質發(fā)生泄漏叫榕。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一姊舵、第九天 我趴在偏房一處隱蔽的房頂上張望晰绎。 院中可真熱鬧,春花似錦括丁、人聲如沸荞下。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽尖昏。三九已至,卻和暖如春构资,著一層夾襖步出監(jiān)牢的瞬間抽诉,已是汗流浹背。 一陣腳步聲響...
推薦閱讀更多精彩內容
- 排序 所謂排序算法允乐,即通過特定的算法因式將一組或多組數據按照既定模式進行重新排序矮嫉。這種新序列遵循著一定的規(guī)則,體現(xiàn)...
- 一、題目 輸入一棵二叉樹和一個整數鳞陨, 打印出二叉樹中結點值的和為輸入整數的所有路徑昨寞。從樹的根結點開始往下一直到葉結...
- 二叉樹的遍歷掏导、按層打印享怀、序列化 這三個操作是不一樣的 二叉樹的遍歷常用遞歸的形式,那前序遍歷來說趟咆,先訪問根結點添瓷,在...