国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

python-二叉樹(shù):前、中、后、層序遍歷

kgbook / 3134人閱讀

摘要:概要本文只實(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

相關(guān)文章

  • 【數(shù)據(jù)結(jié)構(gòu)初階】第八篇——叉樹(shù)的鏈?zhǔn)浇Y(jié)構(gòu)(叉樹(shù)遍歷+層序遍歷+鏈?zhǔn)浇Y(jié)構(gòu)的實(shí)現(xiàn)+相關(guān)

    摘要:代碼實(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)中的二...

    BigNerdCoding 評(píng)論0 收藏0
  • 數(shù)據(jù)結(jié)構(gòu):叉樹(shù)

    摘要:鏈?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)的層次從...

    Ashin 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<