摘要:概要本文只實(shí)現(xiàn)了二叉樹(shù)基本的幾種遍歷,增刪改查,預(yù)計(jì)明天寫(xiě)完,后面的功能也盡量完善定義數(shù)據(jù)結(jié)構(gòu)左節(jié)點(diǎn)右節(jié)點(diǎn)先序遍歷先遍歷順序,根節(jié)點(diǎn),遍歷左子樹(shù),遍歷右子樹(shù)中序遍歷中序遍歷中序遍歷順序,遍歷左子樹(shù),根節(jié)點(diǎn),遍歷右子樹(shù)后序遍歷后序遍歷后序遍歷
概要
本文只實(shí)現(xiàn)了二叉樹(shù)基本的幾種遍歷,增、刪、改、查,預(yù)計(jì)明天寫(xiě)完,后面的功能也盡量完善
定義Node數(shù)據(jù)結(jié)構(gòu)
class Node(object): def __init__(self, data): self.data = data self.lft = None #左節(jié)點(diǎn) self.rgt = None #右節(jié)點(diǎn)先序遍歷
class BTree(object): def __init__(self): self._root = None self._size = 0 def preOrder(self): """ 先遍歷順序: 1,根節(jié)點(diǎn) 2,遍歷左子樹(shù) 3,遍歷右子樹(shù) """ 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,遍歷左子樹(shù) 2,根節(jié)點(diǎn) 3,遍歷右子樹(shù) """ 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,遍歷左子樹(shù) 2,遍歷右子樹(shù) 3,根節(jié)點(diǎn) """ 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是一個(gè)雙向隊(duì)列,先進(jìn)先出是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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/44617.html
摘要:代碼實(shí)現(xiàn)如下二叉樹(shù)的創(chuàng)建與銷(xiāo)毀二叉樹(shù)的創(chuàng)建問(wèn)題通過(guò)前序遍歷的數(shù)組給定一串字符串,代表的是空樹(shù),其他的都是節(jié)點(diǎn)。 ??本篇博客我要來(lái)和大家一起聊一聊數(shù)據(jù)結(jié)構(gòu)中的二...
摘要:鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)由于二叉樹(shù)的每個(gè)結(jié)點(diǎn)最多有兩個(gè)孩子,所以為每個(gè)結(jié)點(diǎn)設(shè)計(jì)一個(gè)數(shù)據(jù)域和兩個(gè)指針域。最終能得到二叉樹(shù)的完整結(jié)構(gòu)。這篇文章主要介紹樹(shù)結(jié)構(gòu)中的一種特殊存在——二叉樹(shù)。主要內(nèi)容有: 二叉樹(shù)的概念 二叉樹(shù)的基本結(jié)構(gòu) 二叉樹(shù)的操作 概念 二叉樹(shù): 每個(gè)結(jié)點(diǎn)最多有兩個(gè)子結(jié)點(diǎn),兩個(gè)子結(jié)點(diǎn)是有次序的,且子結(jié)點(diǎn)次序不能顛倒。兩個(gè)子結(jié)點(diǎn)一般稱之為左結(jié)點(diǎn)及右結(jié)點(diǎn)。 層次: 在樹(shù)中,節(jié)點(diǎn)的層次從...
閱讀 3326·2021-11-16 11:45
閱讀 4402·2021-09-22 15:38
閱讀 2846·2021-09-22 15:26
閱讀 3355·2021-09-01 10:48
閱讀 847·2019-08-30 15:56
閱讀 723·2019-08-29 13:58
閱讀 1492·2019-08-28 18:00
閱讀 2167·2019-08-27 10:53