public class LevelOrder {
/**【題目一:】
* 從上到下打印出二叉樹(shù)的每個(gè)節(jié)點(diǎn),同一層的節(jié)點(diǎn)按照從左到右的順序打印。
* @param root
* @return 一維數(shù)組
*/
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;
}
/**【題目二:】
* 從上到下按層打印二叉樹(shù),同一層的節(jié)點(diǎn)按從左到右的順序打印,每一層打印到一行。
* @param root
* @return 二維數(shù)組 (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;
}
/**【題目三:】
* 從上到下按"之"字形打印二叉樹(shù),奇數(shù)層從左到右打印,偶數(shù)層從右到左打印,每一層打印到一行。
* @param root
* @return 二維數(shù)組
* 形如:
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); // 偶數(shù)層 -> 隊(duì)列頭部
else tmp.addFirst(node.val); // 奇數(shù)層 -> 隊(duì)列尾部
if (node.left != null) queue.add(node.left);
if (node.right != null) queue.add(node.right);
}
res.add(tmp);
}
return res;
}
}
關(guān)于二叉樹(shù)打印的算法題匯總
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 排序 所謂排序算法,即通過(guò)特定的算法因式將一組或多組數(shù)據(jù)按照既定模式進(jìn)行重新排序。這種新序列遵循著一定的規(guī)則,體現(xiàn)...
- 一、題目 輸入一棵二叉樹(shù)和一個(gè)整數(shù), 打印出二叉樹(shù)中結(jié)點(diǎn)值的和為輸入整數(shù)的所有路徑。從樹(shù)的根結(jié)點(diǎn)開(kāi)始往下一直到葉結(jié)...
- Algorithm OJ address OJ website : 從上往下打印二叉樹(shù) Description 從...
- 開(kāi)始 結(jié)束 還可以把循環(huán)嵌套的終止條件改為另一種形式,構(gòu)造樹(shù)方法如下
- 二叉樹(shù)的遍歷、按層打印、序列化 這三個(gè)操作是不一樣的 二叉樹(shù)的遍歷常用遞歸的形式,那前序遍歷來(lái)說(shuō),先訪(fǎng)問(wèn)根結(jié)點(diǎn),在...