用python在完全二叉树中插入一个节点

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

不使用队列DS如何在完全二叉树中插入节点?我尝试了以下代码:

class TreeNode:
    def __init__(self, value=None) -> None:
        self.left = None
        self.value = value
        self.right = None

class Tree:
    def __init__(self, root=None) -> None:
        self.__root = root if not root else Tree.__TreeNode(root)
        self.__len = 1 if root else 0

    def append(self, data, root="_"):
        if self.__root.value is None:
            self.__root = Tree.__TreeNode(data)
            self.__len += 1
            return
        root = self.__root if root == "_" else root
        if not root:
            return False
        if root.left is None and root.right is None:
            root.left = Tree.__TreeNode(data)
            self.__len += 1
            return True
        elif root.left is not None and root.right is None:
            root.right = Tree.__TreeNode(data)
            self.__len += 1
            return True
        elif root.left is not None and root.right is not None:
            if self.append(data, root.left):
                return
            else:
                self.append(data, root.right)
                return

该函数的递归调用总是在树的左侧添加新节点,那么我应该怎么做才能使其也递归检查右侧?

python data-structures tree binary-tree recursive-datastructures
© www.soinside.com 2019 - 2024. All rights reserved.