【问题标题】:Binary Search trees implementation using python使用python实现二叉搜索树
【发布时间】:2020-07-26 13:32:16
【问题描述】:
class Node:
    def __init__(self, data, parent):
        self.leftChild = None
        self.rightChild = None
        self.parent = parent
        self.data = data

class BST:

    def __init__(self):
        self.root = None
        self.count = 0


    def insert(self, data):
        self.count +=1
        if self.root is None:
            self.root = Node(data, None)
        else:
            self.insertNode(data,self.root)


    def insertNode(self, data, parentNode):
        if data < parentNode.data:
            if parentNode.leftChild is not None:
                self.insertNode(data, parentNode.leftChild)
            else:
                parentNode.leftChild = Node(data, parentNode)
        else:
            if parentNode.rightChild is not None:
                self.insertNode(data, parentNode.rightChild)
            else:
                parentNode.rightChild = Node(data, parentNode)


    def get_max(self, node):
        if node.rightChild:
            self.get_max(node.rightChild)
        else:
            print(node.data)
            # return node.data
        # return node.data


    def traverse(self):
        if(self.root is not None):
            self.traverse_InOrder(self.root)

    def traverse_InOrder(self, node):
        if node.leftChild is not None:
            self.traverse_InOrder(node.leftChild)
        print(node.data, end=" ")
        if node.rightChild is not None:
            self.traverse_InOrder(node.rightChild)

bst = BST()
bst.insert(22)
bst.insert(2)
bst.insert(21)
bst.insert(23)
bst.insert(45)
bst.insert(43)
bst.insert(20)
bst.traverse()
print()
bst.get_max(bst.root)
print(bst.get_max(bst.root))

当我打印 node.data 时,在 get_max 函数中它工作正常,但是一旦我返回数据并尝试打印它,如最后一行代码所示,它不会返回任何内容。 我不明白它背后的基本概念。 也许这是我做错了什么。 请解释一下。

【问题讨论】:

    标签: python data-structures binary-search-tree


    【解决方案1】:

    更改 get_max 函数,使其返回最右边的节点:

    def get_max(self, node):
        if node.rightChild:
            return self.get_max(node.rightChild)
        else:
            return node.data
    

    【讨论】:

    • 谢谢,我明白了。
    猜你喜欢
    • 2015-07-23
    • 1970-01-01
    • 2013-12-08
    • 2021-02-20
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    • 2010-11-22
    • 2013-05-03
    相关资源
    最近更新 更多