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

使用临时变量实现二叉搜索树节点插入的代码问题求助

修复后的可运行代码

import sys

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

r = None

def insert():
    global r
    d = int(input('enter data:'))
    if r is None:
        r = Node(d)
        return
    # 存储遍历过程中的父节点
    parent = None
    t = r
    while t is not None:
        parent = t
        if d > t.data:
            t = t.right
        else:
            t = t.left
    # 将新节点挂到父节点的对应子节点位置
    if d > parent.data:
        parent.right = Node(d)
    else:
        parent.left = Node(d)

# 补充中序遍历display函数验证插入效果,二叉搜索树中序遍历为升序
def display():
    def in_order(node):
        if node is None:
            return
        in_order(node.left)
        print(node.data, end=' ')
        in_order(node.right)
    print("当前树中序遍历结果:")
    in_order(r)
    print()

# 空实现delete函数避免调用报错,可后续自行补充逻辑
def delete():
    print("delete功能待实现")

while True:
    print('1.insert')
    print('2.delete')
    print('3.display')
    print('4.exit')
    ch = int(input('enter choice:'))
    
    if ch == 1:
        insert()
    elif ch == 2:
        delete()
    elif ch == 3:
        display()
    elif ch == 4:
        sys.exit()

核心修复点

  • 修正了原代码所有缩进错误,符合Python语法要求
  • 解决插入逻辑的核心缺陷:新增parent临时变量存储遍历过程中的父节点,循环结束后将新节点关联到父节点的left或right属性,保证新节点真正加入树结构。原代码直接给遍历到空的临时变量t赋值,只会修改临时变量指向,不会更新树的结构
  • 补充了基础的中序遍历display函数、空实现delete函数,避免运行时报错,可直接测试插入功能

内容的提问来源于stack exchange,提问作者shourya kumar jha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:06:04