本篇文章為大家展示了如何分析python二叉樹的層次遍歷,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
107. 二叉樹的層次遍歷 II
給定一個二叉樹,返回其節點值自底向上的層次遍歷。 (即按從葉子節點所在層到根節點所在的層,逐層從左向右遍歷)
給定二叉樹 [3,9,20,null,null,15,7]
3 / \ 9 20 / \ 15 7
返回其自底向上的層次遍歷為:
[ [15,7], [9,20], [3] ]
樹的層次遍歷可以使用廣度優先搜索實現。從根節點開始搜索,每次遍歷同一層的全部節點,使用一個列表存儲該層的節點值
如果要求從上到下輸出每一層的節點值,做法是很直觀的,在遍歷完一層節點之后,將存儲該層節點值的列表添加到結果列表的尾部。這道題要求從下到上輸出每一層的節點值,只要對上述操作稍作修改即可:在遍歷完一層節點之后,將存儲該層節點值的列表添加到結果列表的頭部
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public List<List<Integer>> levelOrderBottom(TreeNode root) {
//結果
List<List<Integer>> levelOrder = new LinkedList<List<Integer>>();
if(root == null){
return levelOrder;
}
Queue<TreeNode> queue = new LinkedList<TreeNode>();
queue.offer(root);
//廣度搜索
while(!queue.isEmpty()){
List<Integer> level = new ArrayList<Integer>();
int size = queue.size();
for(int i = 0; i < size; i++){
TreeNode node = queue.poll();
level.add(node.val);
if(node.left != null){
queue.offer(node.left);
}
if(node.right != null){
queue.offer(node.right);
}
}
//每次都插入到第一個位置
levelOrder.add(0,level);
}
return levelOrder;
}
}上述內容就是如何分析python二叉樹的層次遍歷,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。