1. 程式人生 > >【劍指offer】把二叉樹列印成多行

【劍指offer】把二叉樹列印成多行

題目描述

從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。思路:依然是層序遍歷。。
# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    # 返回二維列表[[1,2],[4,5]]
    def Print(self, pRoot):
        # write code here
        if not pRoot:
            return None
        queue = [pRoot]
        last = pRoot
        tmp, res = [], []
        while queue:
            node = queue.pop(0)
            tmp.append(node.val)
            if node.left:
                queue.append(node.left)
            if node.right:
                queue.append(node.right)
            if node == last:
                res.extend(tmp)
                tmp = []
                if queue: last = queue[-1]
        return res

相關推薦

offer列印

題目描述從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。思路:依然是層序遍歷。。# -*- coding:utf-8 -*- # class TreeNode: # def __

Offer 60. 列印

題目描述 從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。 題目地址 https://www.nowcoder.com/practice/445c44d982d04483b04a54f298796288?tpId=13&tqId=11213&rp=3&ru=/ta/co

offer 60. 列印

題目描述 從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。 思路: 兩個棧,分二級,第一級存一行的數curStack,第二級存著一行數所對應的left,right的值nextStack,每次結束 一輪迴圈,把curStack的值給result,然後再將nodes設

offer列印

時間限制:1秒 空間限制:32768K 熱度指數:101798 題目描述 從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。 思路 import java.util.ArrayList; /* public class TreeNode { int

Offer-Java-列印

題目 從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。 程式碼 此處只需要一個佇列進行層序遍歷即可。 import java.util.*; /* public class Tre

Offer-60-列印

題目描述 從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。 import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; /* public class

offer列印(python)

題目描述從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。思路:1、把每層節點的val值用list存好2、把每層節點存好:①計算當層節點的個數,這樣就保證下一步每層的結點都被pop光②然後依次彈出從左到右的每個節點,然後在list中加入該節點對應的左結點、右節點

offer列印

【 宣告:版權所有,轉載請標明出處,請勿用於商業用途。  聯絡信箱:[email protected]】 題目描述從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。 思

pythonoffer系列列印

題目:從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。思路:按層遍歷,遍歷完每層後更新solution:# -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): #

offer》——列印

T: 題目描述 從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。 解法都在程式碼註釋當中了。 我的code: import java.util.ArrayList; import java.util.

Offer19的映象

題目描述 操作給定的二叉樹,將其變換為源二叉樹的映象。 時間限制:1秒;空間限制:32768K 輸入描述: 二叉樹的映象定義:源二叉樹 8 / \ 6 10 / \ / \ 5 7 9 11

offer重建 ★★★

題目描述: 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},則重建二叉樹並返回。 解題思路: 知道整體思路是: 在二

offer重建(含測試函式)

根據前序遍歷和中序遍歷,利用遞迴的思想實現重建二叉樹,並輸出後序遍歷 程式碼如下: /** * Created by Administrator on 2018/11/28. */ class TreeNode{//建立類 int val; TreeNode left

Offer- 重建[Java版]

題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},則重建二叉樹並返回。 /** * Created by

offer判斷是否為平衡

平衡二叉樹(Balanced Binary Tree),具有以下性質:它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹。 第一種遞迴思路,根據定義來,遞迴返回(r-l)<1 and balancetree(r) and bal

Offer38的深度

題目描述 輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。 時間限制:1秒;空間限制:32768K;本題知識點:樹 解題思路 遞迴求解 # -*- coding:utf-8 -*- # clas

offer搜尋與雙向連結串列

題目描述 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成一個排序的雙向連結串列。要求不能建立任何新的結點,只能調整樹中結點指標的指向。 class Solution { public: TreeNode* Convert(TreeNode* pRootOfTree) {

offer平衡

題目:輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。 class Solution { public: bool IsBalanced_Solution(TreeNode* pRoot) { if (pRoot == NULL) return true; ret

offer系列——按之字形順序列印列印,序列化二

按之字形順序列印二叉樹 題目描述 請實現一個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。 解題思路: 法一: 需要兩個棧。我們在列印某一行節點時,把下一層的子節點儲存到相應的棧裡。 如果

offer-------列印

題目: 思路: 程式碼: struct TreeNode { int val; TreeNode *left; TreeNode *right; } void Print(BinaryTreeNOde* pRoot) { if(pRoot == NUL