gpt4 book ai didi

python - 如何创建特定的二叉树?

转载 作者:行者123 更新时间:2023-11-28 18:14:55 24 4
gpt4 key购买 nike

我刚刚实现了我的第一个二叉树:

class BinaryTree:
def __init__(self, obj):
self.key = obj
self.left_c = None
self.right_c = None

def insert_left_c(self, new_node):
if self.left_c == None:
self.left_c = BinaryTree(new_node)
else:
temp = BinaryTree(new_code)
temp.left_c = self.left_c
self.left_c = temp

def insert_right_c(self, new_node):
if self.right_c == None:
self.right_c = BinaryTree(new_node)
else:
temp = BinaryTree(new_code)
temp.right_c = self.right_c
self.right_c = temp

def set_root(self, obj):
self.key = obj

def get_root(self):
return self.key

def get_left_c(self):
return self.left_c

def get_right_c(self):
return self.right_c

我很难理解您实际上是如何按照规范构建树的。例如,我正在尝试构建以下树:

enter image description here

但是,我真的很难理解/想象您如何构建较低的节点并操纵它们的左/右分支。

虽然我可以做一些事情,例如:

binary_tree = BinaryTree('a')


binary_tree.insert_left_c('b')
binary_tree.insert_right_c('d')

binary_tree.insert_right_c('c')
binary_tree.insert_left_c('e')
binary_tree.insert_right_c('f')

但我意识到这是荒谬的,因为我相信我正在为所有处于同一级别的字母创建一个唯一节点?我从来没有真正将一个设置为另一个的 child (?)。

如果有人能解释应该如何解决这个问题,并想象类似的问题,我将不胜感激。

最佳答案

您的insert 函数只对根进行操作,而不会深入到树中。通常,这样的函数会插入到二叉搜索树中,根据要插入的值与当前树的根相比如何向左或向右递归。对于一般的二叉树,您可能希望传递一个显式的左/右方向列表来指定新值的去向。

明确地构建树会更简单。从每片叶子的单独树开始,然后合并它们。

trees = {x: BinaryTree(x) for x in 'abcdef'}
binary_tree = trees['a']
binary_tree.left_c = trees['b']
binary_tree.right_c = trees['c']
trees['b'].right_c = trees['d']
trees['c'].left_c = trees['e']
trees['c'].right_c = trees['f']

关于python - 如何创建特定的二叉树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48957140/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com