從上往下列印出二叉樹的每個節點,同層節點從左至右列印。
條件反射地想通過遞迴解決,結果硬是沒有找到合適的解決思路,也許遞迴的方式不是很適合這種型別的題目吧~
利用佇列的先進先出(fifo)特性解決。每從佇列頭部獲取乙個節點,就將該節點的左右子節點存入佇列的尾部。如此往復,直至隊列為空。這篇部落格內的和**很形象的展示了程式執行過程中佇列內值的變化過程:
二叉樹樣例:
列印二叉樹每層節點時佇列內值的變化:
帶測試的python**:
class
solution:
#從上往下列印出二叉樹的每個節點,同層節點從左至右列印
defprintfromtoptobottom
(self, root):
array =
result =
if root == none:
return result
while array:
newnode = array.pop(0)
if newnode.left != none:
if newnode.right != none:
return result
# 給定二叉樹的前序遍歷和中序遍歷,獲得該二叉樹
defgetbstwithpretin
(self, pre, tin):
if len(pre)==0 | len(tin)==0:
return
none
root = treenode(pre[0])
for order,item in enumerate(tin):
if root .val == item:
root.left = self.getbstwithpretin(pre[1:order+1], tin[:order])
root.right = self.getbstwithpretin(pre[order+1:], tin[order+1:])
return root
class
treenode:
def__init__
(self, x):
self.left = none
self.right = none
self.val = x
if __name__ == '__main__':
flag = "printtreenode"
solution = solution()
preorder_seq = [1, 2, 4, 7, 3, 5, 6, 8]
middleorder_seq = [4, 7, 2, 1, 5, 3, 8, 6]
treeroot1 = solution.getbstwithpretin(preorder_seq, middleorder_seq)
if flag == "printtreenode":
newarray = solution.printfromtoptobottom(treeroot1)
print(newarray)
順序列印二叉樹節點:初級版本(當前頁)
順序列印二叉樹節點:中級版本
順序列印二叉樹節點:高階版本
二叉樹 節點分析
通過問題了解 問題一 某二叉樹中度為2的結點有18個,則該二叉樹中有 性質1 二叉樹的終端結點 葉子結點 數等於雙分支結點數加1.假設二叉樹中終端結點數為n0,單分支結點數為n1,雙分支結點數為n2,二叉樹中總結點數為n,因為二叉樹中所有結點度數均小於或等於2,所以有 n n0 n1 n2 另一方面...
二叉樹節點的刪除
昨天在看書的時候,突然看到二叉查詢樹的刪除,以前學過,不過學的不仔細,結果研究了一晚上,才把二叉樹的刪除操作給整出來。唉,以後看書要仔細啊。先說一下如何刪除二叉樹查詢樹的節點吧。總共有三種情況 1.被刪除的節點是葉子節點,這時候只要把這個節點刪除,再把指向這個節點的父節點指標置為空就行 2.被刪除的...
二叉樹節點的查詢
區 package 二叉樹節點的查詢 public class binarytree public treenode getroot 前序 public void frontshow 中序 public void midshow 後序 public void aftershow 前序查詢 publi...