python 列印二叉樹

2021-09-18 05:43:32 字數 1993 閱讀 2922

使用結點和引用實現二叉樹

# -*- coding: utf-8 -*-

"""created on sat apr 19 22:42:32 2019

@author: 86156

"""#二叉樹的實現

class

binarytree

:#根初始化

def__init__

(self,rootobj)

: self.key=rootobj

self.leftchild=

none

self.rightchild=

none

#插入左結點

definsertleft

(self,newnode)

:if self.leftchild==

none

: self.leftchild=binarytree(newnode)

else

: t=binarytree(newnode)

t.leftchild=self.leftchild

self.leftchild=t

#插入右結點

definsertright

(self,newnode)

:if self.rightchild==

none

: self.rightchild=binarytree(newnode)

else

: t=binarytree(newnode)

t.rightchild=self.rightchild

self.rightchild=t

#獲取左子樹

defgetrightchild

(self)

:return self.rightchild

#獲取右子樹

defgetleftchild

(self)

:return self.leftchild

#設定根植

defsetrootval

(self,obj)

: self.key=obj

defgetrootval

(self)

:return self.key

r=binarytree(

'a')

print

(r.getrootval())

print

(r.getleftchild())

r.insertleft(

'b')

print

(r.getleftchild())

print

(r.getleftchild(

).getrootval())

r.insertright(

'c')

print

(r.getrightchild())

print

(r.getrightchild(

).getrootval)

r.getrightchild(

).setrootval(

'hello'

)print

(r.getrightchild(

).getrootval(

))

從上往下列印出二叉樹的每個節點,同層節點從左至右列印。

def

printfromtoptobottom

(root):if

not root:

#二叉樹為空

return

lst=

result=

while

len(lst)

: t=lst.pop(0)

if t.left:

if t.right:

return result

二叉樹列印

舉例 1.初始化時,last 1,把1放入佇列 2.將1出隊,把1的子孩子2,3放入佇列,更新nlast 3 3.nlast更新完之後,列印上一次出隊的1,並和last比較,如果相同就列印換行,並更新last nlast 3 4.將2出隊,把2的子孩子4放入佇列,更新nlast 4 5,nlast更...

二叉樹列印

給定一顆二叉樹的頭節點head,請按照現在大家看到的這種格式列印 要求列印成 12 主要解決的問題是 如何換行 last 表示正在列印的當前行的最右節點 從左至右遍歷,如果遍歷到last節點,說明該換行了,換行之後,只需要nlast last,繼續下一行的列印過程,一直重複,直到所有的節點都列印完。...

列印二叉樹

之前在了解二叉樹旋轉的時候,為了方便檢視中間狀態,就寫了個以樹狀形式列印二叉樹的函式。起初是使用二叉樹中序遍歷的結果展開的方式,簡單但列印出來的樹有一定的傾斜。例如這棵樹 5 3 7 2 6 8它的中序遍歷結果為 2 3 5 6 7 8 列印出來的結果中,節點 3 和節點 7 不是對稱的。因為節點 ...