1. 程式人生 > >Python實現"二叉樹的層次遍歷||"的一種方法

Python實現"二叉樹的層次遍歷||"的一種方法

給定一棵二叉樹,返回從上到下按層級順序遍歷結點的值(例如,從葉子節點的層級到根結點的層級)

例如:

二叉樹[3,9,20,null,null,15,7],

   3
   / \
  9  20
    /  \
   15   7

返回它從下到上按層級順序遍歷的結果為:

[
  [15,7],
  [9,20],
  [3]
]

1:從上到下按層級遍歷二叉樹

def levelOrderBottom(self, root):
        """
        :type root: TreeNode
        :rtype: List[List[int]]
        """
        if not root:       #樹為空
            return []
        curList = [root]   #存放從上到下,當前層級的樹結點
        rList = []         #存放返回的整數值列表
        while curList:     #從上到下遍歷樹
            tempNodeList = []    #存放下層的結點
            tempValList = []     #存放當前層級的數值
            for node in curList:  #遍歷當前層級的結點
                tempValList.append(node.val)   #新增結點值
                if node.left is not None:      
                    tempNodeList.append(node.left)
                if node.right is not None:
                    tempNodeList.append(node.right)
            curList = tempNodeList     
            rList.append(tempValList)   #當前層級數值列表壓入總列表中
        return rList[::-1]   #反序輸出

相關推薦

python實現層次(寬度優先或叫廣度優先

1、何為層次遍歷       說白了,就是一層一層、由上至下、由左至右的搜尋遍歷二叉樹中的元素。                上面這個二叉樹,那麼層次遍歷的輸出應該是:1、2、

Python實現

二叉樹的遍歷 終端 ini right name 一個 pan 樹的遍歷 二叉樹 二叉樹是有限個元素的集合,該集合或者為空、或者有一個稱為根節點(root)的元素及兩個互不相交的、分別被稱為左子樹和右子樹的二叉樹組成。 二叉樹的每個結點至多只有二棵子樹(不存在度大於2的結

python實現深度

1、什麼是深度優先遍歷       其實深度優先遍歷你可以把它看成是前序遍歷,比如對於如下二叉樹:               其深度遍歷的結果是:1,2,4,8,9,5,3,6,7

python實現及其

class Node(): def __init__(self,data=-1): self.data=data self.left=None self.right=None class Tree(): def __init__(

層次(C語言實現

經過兩天長時間的學習, 通過研究佇列以及二叉樹的相關性質,終於寫出了二叉樹的層次遍歷。 該實現的核心就是使用佇列,每次把訪問到的節點的左右子樹放到佇列裡面去,出隊的時候同樣操作! 感謝@原來如此 , @AlexMok ,兩位同學,在小組相互學習的過程中收穫良

層次

!= problem splay color list gif 二叉樹層次遍歷 eno empty http://www.lintcode.com/zh-cn/problem/binary-tree-level-order-traversal/# 錯誤點:queue是抽象的

畢業了-java層次算法

== 需要 數據 nbsp 測試 class system col ava /*************************************** * 時間:2017年6月23日 * author:lcy * 內容:二叉樹的

畢業了C++層次

== 容器 null tdi 指針 creat tno bit stack //代碼經過測試,賦值粘貼即可用#include<iostream> #include<stdio.h> #include<stack> #include<

第六章例題層次

ear 指針 內存 寬度優先 def delete back blog value 1.指針實現 #include <iostream> #include <vector> #include <queue> #include <

C#實現

c# 遍歷 二叉樹 遞歸 循環 C#實現二叉樹的前序、中序、後序遍歷。public class BinaryTreeNode { int value; BinaryTreeNode left; BinaryTreeNode r

python3實現與遞歸算法解析

python brush 進行 實現 兩張 二進制 pan ret 如果 1、二叉樹的三種遍歷方式   二叉樹有三種遍歷方式:先序遍歷,中序遍歷,後續遍歷 即:先中後指的是訪問根節點的順序 eg:先序 根左右 中序 左根右 後序 左右根   遍歷總體思路:將樹

LeetCode之層次逆序輸出(簡單

問題描述: 給定一個二叉樹,返回其節點值自底向上的層次遍歷。 (即按從葉子節點所在層到根節點所在的層,逐層從左向右遍歷) 例如: 給定二叉樹 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7

層次_判斷結點所屬層次

#include<stdlib.h> #include<stdio.h> #include<stack> #define N 50 using namespace std; typedef struct tree{ char ch; stru

層次列印

二叉樹層次遍歷列印,並且每層對應輸出換行(遍歷一層輸出後,下一層遍歷換行輸出)。 final static int MAX_NUM = 500 class TreeNode { //二叉樹結構 int val = 0; TreeNode left = null;

層次(Java版)

/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * T

使用java實現

                             二叉樹連結串列儲存遍歷的java實現          所謂遍歷(Traversal)是指沿著某條搜尋路線,依次對樹中每個結點均做一次且僅做一次訪問,對二叉樹的遍歷就是將非線性結構的二叉樹中的節點排列在一個線性序列上

遞迴和非遞迴實現

這裡寫自定義目錄標題 歡迎使用Markdown編輯器 新的改變 功能快捷鍵 合理的建立標題,有助於目錄的生成 如何改變文字的樣式 插入連結與圖片 如何插入一段漂亮的程式碼片 生成一個適合你的列表 建

層次並列印行號——java

主要程式碼 public void levelOrderNew(TreeNode root) { TreeNode last=root; //當前行最右結點 TreeNode nlast = null; //下一行最右結點 TreeN

LeetCode:Binary Tree Level Order Traversal層次

=======題目描述======= 題目連結:https://leetcode.com/problems/binary-tree-level-order-traversal/ 題目內容: Binary Tree Level Order Traversal Given a binar

建立:層次--的寬度高度,後序--祖先節點

建立二叉樹,遍歷二叉樹.詳細介紹了層次遍歷和後序遍歷的應用. 層次遍歷:樹的高度,樹的寬度,每一層節點個數等 後序遍歷:根節點到某節點的路徑,兩個節點的最近公共祖先等 package tree; import java.util.LinkedList