python - 迭代地在二叉树中插入值
问题描述
我在迭代地在二叉树中插入元素时遇到问题。递归工作正常。
这是我当前的代码:
class SearchTree:
def __init__(self, value):
self.empty = True
self.value = value
self.left = None
self.right = None
def is_empty(self):
return self.empty
def get_value(self):
return self.value
def get_left(self):
return self.left
def get_right(self):
return self.right
def elem(self, value):
if self.is_empty():
return False
elif value < self.value:
return self.left.elem(value)
elif value > self.value:
return self.right.elem(value)
else:
return True
def add_recursive(self, value):
if self.is_empty():
self.empty = False
self.value = value
self.left = SearchTree(value)
self.right = SearchTree(value)
return True
else:
if value < self.value:
return self.left.add_recursive(value)
elif value > self.value:
return self.right.add_recursive(value)
else:
return False
def add_iterative(self, value):
new_node = SearchTree(value)
x = self
y = None
while x.empty is False:
y = x
if value < x.value:
x = x.left
else:
x = x.right
if y is None:
self.empty = False
self.value = value
self.left = SearchTree(value)
self.right = SearchTree(value)
return True
elif value < y.value:
y.left = new_node
elif value > y.value:
y.right = new_node
else:
return False
def __str__(self):
if self.is_empty():
return ""
else:
return "(" + str(self.left) + "," + str(self.value) + "," + str(self.right) + ")"
这是测试文件:
import random
from searchtree import SearchTree
l = []
for i in range(10):
l.append(random.randint(0, 10))
st_re = SearchTree(10)
st_it = SearchTree(10)
for r in l:
st_re.add_recursive(r)
st_it.add_iterative(r)
print(l)
print(st_re)
print(st_it)
我得到的当前输出:
随机列表:[1, 7, 6, 5, 7, 5, 10, 1, 4, 8]
二叉树添加递归:(,1,((((,4,),5,),6,),7,((,8,),10,)))
迭代添加的二叉树:(,1,)
我找不到任何解决方案让它工作,有人可以帮忙吗?
解决方案
推荐阅读
- r - 有条件地替换 R 中列表列表中的特定值
- powershell - 无法在 PowerShell (x86) 中导入 MSOnline 模块
- typescript - 如何使用索引签名声明打字稿类字段
- excel - 顺序复制和粘贴宏到参考单元格
- reactjs - 不知道为什么当我等待时仍会返回承诺
- c - 如何将 unsigned short 7273 转换为 ascii HI
- join - 在 Google 表格中附加两个查询的结果失败
- android-jetpack - 如何在jetpack compose中显示多个TextField的错误消息
- python - Python __str__ 方法在多行中返回对象列表的值
- flutter - 库 'package:splashscreen/splashscreen.dart' 是旧版,不应导入到空安全库中