leetcode----給定一個二叉樹,返回該二叉樹由底層到頂層的層序遍歷,(從左向右,從葉子節點到根節點,一層一層的遍歷)
知識點:
1.list.add(下標,值)。
每次在下標0處插入元素時,自動將列表中的元素後移
例如,依次向列表中的0位置插入12 13 14
import java.util.ArrayList;
public class TestOne {
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(0,12);
for(int i=0;i<list.size();i++) {
System.out.println("插入值12。 下標:"+i+" 值:"+list.get(i));
}
System.out.println("-----------");
list.add(0,13);
for(int i=0;i<list.size();i++) {
System.out.println("插入值13。 下標:"+i+" 值:"+list.get(i));
}
System.out.println("-----------");
list.add(0,14);
for(int i=0;i<list.size();i++) {
System.out.println("插入值14。 下標:"+i+" 值:"+list.get(i));
}
System.out.println("-----------");
}
}
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* }
*/
public class Solution {
/**
*
* @param root TreeNode類
* @return int整型ArrayList<ArrayList<>>
思路: 通過佇列和棧來實現
1. 從根節點開始,按從右向左的順序,對二叉樹進行層次遍歷
2. 將訪問的結果放入棧中(從右至左,從上到下)
3. 最後,將棧中的所有元素出棧,得到逆序的遍歷結果(從左至右,從下到上)
*/
public ArrayList<ArrayList<Integer>> levelOrderBottom (TreeNode root) {
//1.建立列表陣列
ArrayList<ArrayList<Integer>> AllList = new ArrayList<>();
//2.樹為空
if(root==null){
return AllList;
}
//3.建立list列表,類似於佇列。
ArrayList<TreeNode> list = new ArrayList<>();
list.add(root);//先將根節點加入列表
while(list.size()!=0){ //佇列不為空
//存放當前層遍歷的結果
ArrayList<Integer> l = new ArrayList<>();
int size = list.size(); //當前層的結點數目
for(int j=0;j<size;j++){//遍歷當前層的結點,並將其所有的孩子結點放入list
TreeNode node = list.remove(0);//獲取list中的第一個元素,並從list刪除
l.add(node.val);
if(node.left!=null) list.add(node.left);
if(node.right!=null) list.add(node.right);
}//for
//將當前層的遍歷結果 放入結果集中的第一個位置
AllList.add(0,l);
}//for
return AllList;
}
}
相關文章
- 層序遍歷二叉樹二叉樹
- 二叉樹的層序遍歷二叉樹
- 【C++】返回每一層二叉樹的平均值(層序遍歷)C++二叉樹
- 建立二叉樹:層次遍歷--樹的寬度高度,後序遍歷--祖先節點二叉樹
- 層序遍歷樹的節點,佇列實現佇列
- 二叉樹的按層遍歷二叉樹
- 通過層次遍歷計算二叉樹的層數二叉樹
- python-二叉樹:前、中、後、層序遍歷Python二叉樹
- 二叉樹:構造二叉樹(通過前序和中序遍歷)、映象翻轉、層次遍歷二叉樹
- 二叉樹的四種遍歷方法:先序,中序,後序,層序二叉樹
- LeetCode102.二叉樹的層序遍歷LeetCode二叉樹
- 二叉樹節點個數,葉子個數,第K層個數,最低公共節點二叉樹
- LeetCode-107-二叉樹的層序遍歷 IILeetCode二叉樹
- 採用層次遍歷判斷二叉樹為完全二叉樹二叉樹
- Leetcode 演算法題解系列 - 二叉樹的層序遍歷LeetCode演算法二叉樹
- 二叉樹的層序遍歷詳細講解(附完整C++程式)二叉樹C++
- [Leetcode]102.二叉樹的層次遍歷LeetCode二叉樹
- [LintCode]BinaryTreeLevelOrderTraversal(二叉樹的層次遍歷)二叉樹
- [程式設計之美][3.10] 分層遍歷二叉樹程式設計二叉樹
- 非遞迴遍歷二叉樹的四種策略-先序、中序、後序和層序遞迴二叉樹
- [資料結構] BFS演算法實現層序遍歷輸出一顆二叉樹資料結構演算法二叉樹
- 遞迴和迭代實現二叉樹先序、中序、後序和層序遍歷遞迴二叉樹
- 【面試】基於二叉樹層次遍歷相關問題的求解面試二叉樹
- 刷題系列 - Python實現二叉樹按層級遍歷Python二叉樹
- 【層次查詢】Hierarchical Queries之“樹的遍歷”
- leetcode 103. 二叉樹的鋸齒形層序遍歷 BFS方法LeetCode二叉樹
- leetcode------給定一個二叉樹和一個值sum,判斷是否有從根節點到葉子節點的節點值之和等於sum 的路徑,LeetCode二叉樹
- 根據二叉樹的前序遍歷和中序遍歷輸出二叉樹;二叉樹
- Go之底層利器-AST遍歷GoAST
- 程式碼隨想錄演算法訓練營,9月9日 | 二叉樹遞迴遍歷,迭代遍歷,層序遍歷演算法二叉樹遞迴
- C4top-玩轉二叉樹(根據前序中序映象反轉後層次遍歷)二叉樹
- 二叉樹的建立、前序遍歷、中序遍歷、後序遍歷二叉樹
- java實現二叉樹的Node節點定義手撕8種遍歷(一遍過)Java二叉樹
- leetcode 102 劍指Offer 32 二叉樹的層次遍歷LeetCode二叉樹
- 二叉樹add底層原理二叉樹
- 144.二叉樹的前序遍歷145.二叉樹的後序遍歷 94.二叉樹的中序遍歷二叉樹
- 根據前序遍歷序列、中序遍歷序列,重建二叉樹二叉樹
- 二叉樹建立,前序遍歷,中序遍歷,後序遍歷 思路二叉樹