按層列印二叉樹

2021-10-08 13:31:30 字數 1377 閱讀 3998

從上到下按層列印二叉樹,同一層結點從左至右輸出,每一層輸出一行

思路:

1、廣度遍歷,利用佇列思想

2、要有2個佇列,分別存放當前層的節點 和 下一層的節點

**:

class

node

:# 節點類

def__init__

(self, val)

: self.val = val

self.left =

none

self.right =

none

class

solution

:def

print_node

(self,proot)

:# 如果二叉樹為空

ifnot proot:

return

li1 =

[proot]

li2 =

li =

[[proot.val]

]while li1:

# li1 此層還存在節點

cur = li1.pop(0)

# print(cur.value, end=' ')

# 新增左孩子(左孩子存在情況下)

if cur.left:

# 新增右孩子(右孩子存在情況下)

if cur.right:

# li1 此層不存在節點 li1 li2互換,列印換行

ifnot li1:

if li2:

[node.val for node in li2]

) li1,li2=li2,li1

return li

if __name__ ==

'__main__'

: node1 = node(1)

node1.left = node(2)

node1.right = node(3)

node1.left.left = node(4)

node1.left.right = node(5)

node1.right.left = node(6)

node1.right.right = node(7)

node1.left.left.left = node(8)

node1.left.left.right = node(9)

node1.left.right.left = node(10)

t = solution(

)# 廣度遍歷: 1 2 3 4 5 6 7 8 9 10

result = t.print_node(node1)

print

(result)

按層列印二叉樹

二叉樹是一種常見的資料結構,由n 你 0 個節點構成,每個節點最多有兩個子二叉樹。由二叉樹的定義可知,一棵二叉樹由三部分組成 根節點 左子樹和右子樹。二叉樹的遍歷方式有先序遍歷 中序遍歷和後序遍歷。先序遍歷 首先訪問根節點,然後訪問根節點左孩子,再訪問根節點的右孩子。中序遍歷 首先訪問根節點左孩子,...

二叉樹3 二叉樹按層遍歷列印

題目 有一棵二叉樹,請設計乙個演算法,按照層次列印這棵二叉樹。給定二叉樹的根結點root,請返回列印結果,結果按照每一層乙個陣列進行儲存,所有陣列的順序按照層數從上往下,且每一層的陣列內元素按照從左往右排列。保證結點數小於等於500。思路 對於二叉樹,除了先序遍歷 中序遍歷 後序遍歷之外,常用的遍歷...

按層列印二叉樹 每行列印一層

一,問題介紹 給定一棵二叉樹,按照層序遍歷的順序列印二叉樹。但是要求,每一行列印一層資料。二,演算法分析 借助二叉樹的層序遍歷來實現 使用佇列的先入先出性質保證列印的順序 二叉樹層序遍歷參考 層序列印參考 1 public void printtree binarynoderoot 21if cur...