第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

二叉樹的所有元素列表

二叉樹的所有元素列表

有只小跳蛙 2022-06-14 17:33:28
作為初學者,我一直在嘗試在 python 中實現(xiàn)二叉樹。并且已經(jīng)可以成功實現(xiàn)很多,只有一個問題是我無法返回traverse()二叉樹中所有元素 ( ) 的列表。我在這里使用兩個類,Node并且BinaryTree.節(jié)點類class Node:    def __init__(self, val):        self.value = val        self.left = None        self.right = NoneTraverse 方法返回二叉樹中的所有元素。    def traverse(self): #<-- Problem here        tree_elements = []        if self.left != None:            self.left.traverse()        tree_elements.append(self.value)        #debug        print(self.value, end=" ")        if self.right != None:            self.right.traverse()        return tree_elements    def addNode(self, node):        if node.value < self.value and node.value != self.value:            if self.left == None:                self.left = node            else:                self.left.addNode(node)        elif node.value > self.value and node.value != self.value:            if self.right == None:                self.right = node            else:                self.right.addNode(node)    def search(self, val):        if val == self.value:            return "Found"        elif val < self.value:            if self.left != None:                return self.left.search(val)            else:                return "Not Found "        elif val > self.value:            if self.right != None:                return self.right.search(val)            else:                return "Not Found"二叉樹class BinaryTree:    def __init__(self):        self.root = None    def addVlaue(self, val):        node = Node(val)        if self.root == None:            self.root = node        else:            self.root.addNode(node)     def search(self, val):         if self.root == None:             return False         else:             return self.root.search(val)    def traverse(self):         if self.root == None:             return "no data"        else:            return self.root.traverse()問題:traverse方法必須返回二叉樹中的所有元素,但我只得到樹的第一個值。例子:元素:100 18 46 5 65 5 31 71 94 43 #在樹中輸入樹的輸出:5 18 31 43 46 65 71 94 100 #預期輸出[100] #樹的輸出
查看完整描述

1 回答

?
慕哥9229398

TA貢獻1877條經(jīng)驗 獲得超6個贊

該tree_elements列表需要沿著遞歸調(diào)用進行,沿途收集每個節(jié)點。換句話說,它必須作為參數(shù)傳遞給traverse調(diào)用(調(diào)用traverse根節(jié)點時除外)。


否則,在每次遍歷調(diào)用中都會創(chuàng)建并丟棄一個新列表(因為在其遞歸期間您從未對其返回值做任何事情traverse),除了僅返回根元素的頂級遞歸調(diào)用。


試試這個實現(xiàn):


def traverse(self, tree_elements=None):

    if tree_elements is None:

        tree_elements = []

   if self.left != None:

        self.left.traverse(tree_elements=tree_elements)

    tree_elements.append(self.value)

    if self.right != None:

        self.right.traverse(tree_elements=tree_elements)

    return tree_elements


查看完整回答
反對 回復 2022-06-14
  • 1 回答
  • 0 關注
  • 122 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號