在python树中插入新值
我有一棵树,像:在python树中插入新值,python,list,tree,insert,binary-search-tree,Python,List,Tree,Insert,Binary Search Tree,我有一棵树,像: tree = [[[None,1,None],2,[None,3,None]],4,[None,6,[None,7,None]]] 数字表示每个节点的根,无表示没有值的子节点 例如,主根是4,[[None,1,None],2,[None,3,None]]是左边的子树,而这个[None,6,[None,7,None]]是右边的子树。左边子树上的主根是2等 我的问题是我想在这棵树中插入一个值 例如,我想要添加值5,这就是我想要的: tree = [[[None, 1, None]
tree = [[[None,1,None],2,[None,3,None]],4,[None,6,[None,7,None]]]
数字表示每个节点的根,无表示没有值的子节点
例如,主根是4,[[None,1,None],2,[None,3,None]]是左边的子树,而这个[None,6,[None,7,None]]是右边的子树。左边子树上的主根是2等
我的问题是我想在这棵树中插入一个值
例如,我想要添加值5,这就是我想要的:
tree = [[[None, 1, None], 2, [None, 3, None]], 4, [[None, 5, None], 6, [None, 7, None]]]
我的函数有两个参数,树和整数要相加,我需要使用递归函数,例如,这是我开始的:
def insert(tree,int):
cur = tree
prev = None
while cur != None:
prev = cur
if int < cur[1]:
cur = cur[0]
else :
cur = cur[2]
def插入(树,int):
cur=树
prev=无
而cur!=无:
prev=cur
如果int
提前感谢这可以通过树遍历找到目标节点并用所需值替换其元素来完成
# Do an in-order traversal recursively
def in_order(tree):
if tree is None:
return
for element in in_order(tree[0]):
yield element
yield tree
for element in in_order((tree[2])):
yield element
# helper method to create a new node
def new_node(val):
return [None, val, None]
if __name__ == '__main__':
tree = [[[None, 1, None], 2, [None, 3, None]], 4, [None, 6, [None, 7, None]]]
print(tree)
# Search for the target node with the value 6 and create a new node as its left child
for element in in_order(tree):
if element[1] == 6:
element[0] = new_node(5)
print(tree)
由于树遍历是访问树中所有节点的通用方法,因此可以修改它以查找其他节点。
例如:
# Finding leaf nodes
for element in in_order(tree):
if element[0] is None and element[2] is None:
# Do something
pass
预序和后序遍历也适用。既然您提到了递归,下面是一个使用递归的解决方案:
def insert_节点(根,节点):
如果root==[None]:#空树的角案例
root.append(节点)
root.append(None)#现在root将是:[无,节点,无]
返回
如果节点是您的树,则二叉搜索树?int
不建议作为变量名。@Maaddy它不是二叉树,因为节点可以有两个以上的子节点它是二叉树:)啊,我现在明白了!我的错