不使用队列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
该函数的递归调用总是在树的左侧添加新节点,那么我应该怎么做才能使其也递归检查右侧?