Python教程講解二叉樹的三種深度
python程式碼實現了二叉樹,這次將會實現二叉樹的幾種遍歷方法,來更好的解析二叉樹的結構特點。分別是一種廣度遍歷,和三種深度遍歷方法:先序遍歷,中序遍歷,後序遍歷。下面是程式碼實現:
1、先序遍歷
遍歷順序:根==》左子樹==》右子樹,實現程式碼:
def pre(self,node):#定義一個先序遍歷的方法
if node is None:#判斷節點是否為空,為空則返回
return
print(node.elem,end=' ')#列印遍歷的節點
self.pre(node.left)#遞迴左子樹
self.pre(node.right)#遞迴右子樹
2、中序遍歷
遍歷順序:左子樹==》根 ==》右子樹,實現程式碼:
def md(self,node):#定義一箇中序遍歷的方法
if node is None: #判斷節點是否為空,為空則返回
return
self.md(node.left) #遞迴左子樹
print(node.elem,end=' ') #列印遍歷的節點
self.md(node.right) #遞迴右子樹
3、後序遍歷
遍歷順序:左子樹==》右子樹==》根,實現程式碼:
def bhd(self,node):#定義一個後序遍歷的方法
if node is None:#判斷節點是否為空,為空返回
return
self.bhd(node.left)#遞迴左子樹
self.bhd(node.right)#遞迴右子樹
print(node.elem,end=' ')#列印遍歷的節點
列印結果:
if __name__ == "__main__":
tree=Tree()
tree.add(0)
tree.add(1)
tree.add(2)
tree.add(3)
tree.add(4)
tree.add(5)
tree.add(6)
tree.add(7)
tree.add(8)
tree.pre(tree.root)#列印先序遍歷的值
print(' ')
tree.md(tree.root)#列印中序遍歷的值
print(' ')
tree.bhd(tree.root)#列印後序遍歷的值
print(' ')
#輸出:
# 0 1 3 7 8 4 2 5 6 先序遍歷的值
# 7 3 8 1 4 0 5 2 6 中序遍歷的值
# 7 8 3 4 1 5 6 2 0 後序遍歷的值
總結二叉樹的三種深度遍歷的實現主要是利用了遞迴,利用不同的遍歷順序來改變遞迴的順序和節點列印的順序來實現,利用這一特點就可以用python快速的實現三種遍歷方法了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2774642/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python二叉樹的三種深度Python二叉樹
- Python實現二叉樹的三種深度遍歷方法!Python二叉樹
- 二叉樹的深度二叉樹
- [每日一題] 第三題:二叉樹的深度每日一題二叉樹
- 二叉樹深度二叉樹
- 二叉樹---深度二叉樹
- 二叉樹的子結構、深度以及重建二叉樹二叉樹
- 二叉樹的最大深度和最小深度二叉樹
- 二叉樹的種類二叉樹
- 二叉樹(BST)中序遍歷的三種方法二叉樹
- JZ-038-二叉樹的深度二叉樹
- 二叉樹的最大/最小深度二叉樹
- 二叉樹的前序、中序、後序三種遍歷二叉樹
- 一文弄懂二叉樹的三種遍歷方式二叉樹
- python實現二叉樹和它的七種遍歷Python二叉樹
- 二叉樹的深度、寬度遍歷及平衡樹二叉樹
- 【劍指offer】二叉樹深度二叉樹
- 二叉樹的最小深度問題二叉樹
- 每日一練(27):二叉樹的深度二叉樹
- python 實現二叉樹的深度&&廣度優先遍歷Python二叉樹
- 劍指Offer-40-二叉樹的深度二叉樹
- 劍指offer——二叉樹的深度C++二叉樹C++
- 《劍指offer》:[39]求解二叉樹的深度二叉樹
- Maximum Depth of Binary Tree 二叉樹的深度二叉樹
- LeetCode題解(Offer26):判斷二叉樹A是否為二叉樹B的子樹(Python)LeetCode二叉樹Python
- 程式碼隨想錄day14 || 226 翻轉二叉樹,101 對稱二叉樹, 104 二叉樹的最大深度, 111 二叉樹的最小深度二叉樹
- 二叉樹四種遍歷二叉樹
- 重建二叉樹[by Python]二叉樹Python
- 刷題系列 - Python用遞迴實現求二叉樹深度Python遞迴二叉樹
- [每日一題] 第八題:二叉樹的深度每日一題二叉樹
- 劍指offer | 55 - I. 二叉樹的深度二叉樹
- 111. 二叉樹的最小深度二叉樹
- 111. 二叉樹的最小深度(***)二叉樹
- LeeCode-104. 二叉樹的最大深度二叉樹
- 洛谷 P4913 二叉樹深度二叉樹
- 【圖解資料結構】 一組動畫徹底理解二叉樹三種遍歷圖解資料結構動畫二叉樹
- Day16 | 104.二叉樹的最大深度 、111.二叉樹的最小深度 、222.完全二叉樹的節點個數二叉樹
- 二叉樹的層序遍歷詳細講解(附完整C++程式)二叉樹C++