摘要:概要本文只實現(xiàn)了二叉樹基本的幾種遍歷,增刪改查,預計明天寫完,后面的功能也盡量完善定義數(shù)據(jù)結(jié)構(gòu)左節(jié)點右節(jié)點先序遍歷先遍歷順序,根節(jié)點,遍歷左子樹,遍歷右子樹中序遍歷中序遍歷中序遍歷順序,遍歷左子樹,根節(jié)點,遍歷右子樹后序遍歷后序遍歷后序遍歷
概要
本文只實現(xiàn)了二叉樹基本的幾種遍歷,增、刪、改、查,預計明天寫完,后面的功能也盡量完善
定義Node數(shù)據(jù)結(jié)構(gòu)
class Node(object): def __init__(self, data): self.data = data self.lft = None #左節(jié)點 self.rgt = None #右節(jié)點先序遍歷
class BTree(object): def __init__(self): self._root = None self._size = 0 def preOrder(self): """ 先遍歷順序: 1,根節(jié)點 2,遍歷左子樹 3,遍歷右子樹 """ btree = [] def recurse(node): if node != None: btree.append(node.data) recurse(node.lft) recurse(node.rgt) recurse(self._root) return btree
中序遍歷
class BTree(object): def __init__(self): self._root = None self._size = 0 # 中序遍歷 def inOrder(self): """ 中序遍歷順序: 1,遍歷左子樹 2,根節(jié)點 3,遍歷右子樹 """ btree = [] def recurse(node): if node != None: recurse(node.lft) btree.append(node.data) recurse(node.rgt) recurse(self._root) return btree
后序遍歷
class BTree(object): def __init__(self): self._root = None self._size = 0 # 后序遍歷 def postOrder(self): """ 后序遍歷順序: 1,遍歷左子樹 2,遍歷右子樹 3,根節(jié)點 """ btree = [] def recurse(node): if node != None: recurse(node.lft) recurse(node.rgt) btree.append(node.data) recurse(self._root) return btree
層序遍歷
from collections import deque class BTree(object): def __init__(self): self._root = None self._size = 0 # 層序遍歷 def leverOrder(self): q = deque() q.append(self._root) btree = [] while q: #dque是一個雙向隊列,先進先出是popleft node = q.popleft() btree.append(node.data) if node.lft: q.append(node.lft) if node.rgt: q.append(node.rgt) return btree
引用
github 源碼Btree源碼
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/44617.html
摘要:代碼實現(xiàn)如下二叉樹的創(chuàng)建與銷毀二叉樹的創(chuàng)建問題通過前序遍歷的數(shù)組給定一串字符串,代表的是空樹,其他的都是節(jié)點。 ??本篇博客我要來和大家一起聊一聊數(shù)據(jù)結(jié)構(gòu)中的二...
摘要:鏈式存儲結(jié)構(gòu)由于二叉樹的每個結(jié)點最多有兩個孩子,所以為每個結(jié)點設(shè)計一個數(shù)據(jù)域和兩個指針域。最終能得到二叉樹的完整結(jié)構(gòu)。這篇文章主要介紹樹結(jié)構(gòu)中的一種特殊存在——二叉樹。主要內(nèi)容有: 二叉樹的概念 二叉樹的基本結(jié)構(gòu) 二叉樹的操作 概念 二叉樹: 每個結(jié)點最多有兩個子結(jié)點,兩個子結(jié)點是有次序的,且子結(jié)點次序不能顛倒。兩個子結(jié)點一般稱之為左結(jié)點及右結(jié)點。 層次: 在樹中,節(jié)點的層次從...
閱讀 3505·2021-11-16 11:45
閱讀 4651·2021-09-22 15:38
閱讀 2995·2021-09-22 15:26
閱讀 3548·2021-09-01 10:48
閱讀 1122·2019-08-30 15:56
閱讀 851·2019-08-29 13:58
閱讀 1678·2019-08-28 18:00
閱讀 2417·2019-08-27 10:53