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

Python动态设置二叉树左分支多节点问题求助

解决方案

你的问题在于每次调用add_node时直接覆盖了self.root.left,导致永远只能保留一个左子节点。要实现动态在左分支末尾添加节点,只需要沿着左链遍历到最后一个节点,再把新节点挂到它的left属性上即可,不需要用__setattr__这种复杂方法。

修改后的add_node方法如下:

class IspNetwork :
    def __init__(self) -> None:
        self.root : Node = Node("isp")

    def add_node(self, obj) :
        node = ObjectEncoder().encode(obj)
        new_node = Node(node)
        current = self.root
        # 遍历到左分支的最后一个节点
        while current.left is not None:
            current = current.left
        # 将新节点挂到最后一个节点的left上
        current.left = new_node

原理说明

  • 每次添加节点时,从根节点self.root开始,不断沿着left属性往下走,直到找到一个left为None的节点(也就是当前左链的末尾)。
  • 把新创建的节点赋值给这个末尾节点的left,这样就形成了root.left.left...left的链式结构。

补充说明

假设你的Node类定义大致如下(如果还没定义的话):

class Node:
    def __init__(self, value):
        self.value = value
        self.left = None  # 初始化时左子节点默认为None

这样每次调用isp_network.add_node(obj),都会在左分支的最后新增一个节点,完全符合你想要的效果。

内容的提问来源于stack exchange,提问作者kiraoverflow

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 19:42:06