從上到下按層列印二叉樹,同一層結點從左至右輸出,每一層輸出一行
思路:
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...