You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python跨文件调用DSABinarySearchTree提示未定义的问题排查

解决“DSABinarySearchTree未定义”报错的方法

原因分析

报错核心是第二个文件直接使用DSABinarySearchTree类名,但该类定义在searchtree模块中,当前代码未正确引用模块内的类。同时第一个文件存在缩进错误——Python对缩进严格要求,类内方法未缩进会导致类定义不完整,同样会引发导入问题。

解决方法

方法1:直接导入目标类

修改第二个文件的导入语句,明确从searchtree模块导入DSABinarySearchTree类:

from searchtree import DSABinarySearchTree

bst = DSABinarySearchTree()

# Test insertion
bst.insert(5)
bst.insert(3)
bst.insert(8)
bst.insert(2)
bst.insert(4)
bst.insert(7)
bst.insert(9)

方法2:通过模块名访问类

保持导入语句不变,实例化类时添加模块前缀:

import searchtree

bst = searchtree.DSABinarySearchTree()

# Test insertion
bst.insert(5)
bst.insert(3)
bst.insert(8)
bst.insert(2)
bst.insert(4)
bst.insert(7)
bst.insert(9)

额外注意:修复第一个文件的缩进错误

第一个文件中类的方法未缩进,会导致类定义无效,必须修正缩进(以4个空格为例):

class DSATreeNode:
    def __init__(self, data):
        self.data = data
        self.left = None
        self.right = None

class DSABinarySearchTree:
    def __init__(self):
        self.root = None

    def insert(self, data):
        if self.root is None:
            self.root = DSATreeNode(data)
        else:
            self._insert(data, self.root)

另外需补充实现_insert方法,否则调用insert时会触发新的报错。

内容的提问来源于stack exchange,提问作者Rasal.A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 10:10:26