在二叉树搜索中停止重复

问题描述 投票:0回答:0

我当前的代码打印出额外的 7。我只想打印出一个数字而不是额外的一个。我知道这段代码看起来很简单,但我似乎无法弄清楚如何停止打印重复数字。寻求有关如何更正代码的建议。这是代码示例。

def _insert(self, data, node):
        if data < node.data:
            # The data belongs on the left side.
            if node.left is None:
                # We found an empty spot
                node.left = BST.Node(data)
            else:
                # Need to keep looking.  Call _insert
                # recursively on the left sub-tree.
                # if delete self._insert(data, node.left) will not print out 1
                self._insert(data, node.left)
        # Remove else: would cause the code to become disordered. 
        else:
            # The data belongs on the right side.
            if node.right is None:
                # We found an empty spot
                node.right = BST.Node(data)
            else:
                # Need to keep looking.  Call _insert
                # recursively on the right sub-tree.
                 # Remove code below will not print out 10
                self._insert(data, node.right)
        

1、3、4、5、6、7、7、10

我尝试删除两行代码,希望它能停止程序中的重复。

删除下面的代码将不会打印出 10

            self._insert(data, node.right)

如果删除 self._insert(data, node.left) 将不会打印出来 1

            self._insert(data, node.left)

我读了这篇文章,希望能把它添加到我的程序中 https://www.geeksforgeeks.org/how-to-handle-duplicates-in-binary-search-tree/

python-3.x linked-list binary-tree binary-search-tree nodes
© www.soinside.com 2019 - 2024. All rights reserved.