gpt4 book ai didi

python - 如何实现二叉树?

转载 作者:IT老高 更新时间:2023-10-28 21:10:10 25 4
gpt4 key购买 nike

在 Python 中可用于实现二叉树的最佳数据结构是什么?

最佳答案

这是我对二叉搜索树的简单递归实现。

#!/usr/bin/python

class Node:
def __init__(self, val):
self.l = None
self.r = None
self.v = val

class Tree:
def __init__(self):
self.root = None

def getRoot(self):
return self.root

def add(self, val):
if self.root is None:
self.root = Node(val)
else:
self._add(val, self.root)

def _add(self, val, node):
if val < node.v:
if node.l is not None:
self._add(val, node.l)
else:
node.l = Node(val)
else:
if node.r is not None:
self._add(val, node.r)
else:
node.r = Node(val)

def find(self, val):
if self.root is not None:
return self._find(val, self.root)
else:
return None

def _find(self, val, node):
if val == node.v:
return node
elif (val < node.v and node.l is not None):
return self._find(val, node.l)
elif (val > node.v and node.r is not None):
return self._find(val, node.r)

def deleteTree(self):
# garbage collector will do this for us.
self.root = None

def printTree(self):
if self.root is not None:
self._printTree(self.root)

def _printTree(self, node):
if node is not None:
self._printTree(node.l)
print(str(node.v) + ' ')
self._printTree(node.r)

# 3
# 0 4
# 2 8
tree = Tree()
tree.add(3)
tree.add(4)
tree.add(0)
tree.add(8)
tree.add(2)
tree.printTree()
print(tree.find(3).v)
print(tree.find(10))
tree.deleteTree()
tree.printTree()

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

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