亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

python-二叉樹:前、中、后、層序遍歷

kgbook / 3193人閱讀

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

相關(guān)文章

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

    摘要:代碼實現(xiàn)如下二叉樹的創(chuàng)建與銷毀二叉樹的創(chuàng)建問題通過前序遍歷的數(shù)組給定一串字符串,代表的是空樹,其他的都是節(jié)點。 ??本篇博客我要來和大家一起聊一聊數(shù)據(jù)結(jié)構(gòu)中的二...

    BigNerdCoding 評論0 收藏0
  • 數(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é)點的層次從...

    Ashin 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<