Python 实现二叉树:代码示例及详解
以下是使用 Python 语言实现二叉树的示例代码:
class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
class BinaryTree:
def __init__(self):
self.root = None
def insert(self, val):
'插入节点'
if self.root is None:
self.root = TreeNode(val)
else:
self._insert(val, self.root)
def _insert(self, val, node):
'辅助函数,递归插入节点'
if val < node.val:
if node.left is None:
node.left = TreeNode(val)
else:
self._insert(val, node.left)
else:
if node.right is None:
node.right = TreeNode(val)
else:
self._insert(val, node.right)
def find(self, val):
'查找节点'
if self.root is None:
return False
else:
return self._find(val, self.root)
def _find(self, val, node):
'辅助函数,递归查找节点'
if val == node.val:
return True
elif val < node.val and node.left is not None:
return self._find(val, node.left)
elif val > node.val and node.right is not None:
return self._find(val, node.right)
return False
def inorder_traversal(self):
'中序遍历'
if self.root is not None:
self._inorder_traversal(self.root)
def _inorder_traversal(self, node):
'辅助函数,递归中序遍历'
if node.left is not None:
self._inorder_traversal(node.left)
print(node.val)
if node.right is not None:
self._inorder_traversal(node.right)
if __name__ == '__main__':
# 创建二叉树
bt = BinaryTree()
bt.insert(5)
bt.insert(3)
bt.insert(8)
bt.insert(1)
bt.insert(4)
bt.insert(7)
bt.insert(9)
bt.insert(2)
bt.insert(6)
# 中序遍历
bt.inorder_traversal()
# 查找节点
print(bt.find(8))
print(bt.find(10))
在该示例代码中,我们定义了 TreeNode 类和 BinaryTree 类,分别表示二叉树的节点和二叉树本身。在 BinaryTree 类中,我们实现了插入节点、查找节点、中序遍历等方法。其中,插入节点和查找节点使用了递归实现,中序遍历使用了栈实现。在 main 函数中,我们创建了一个二叉树对象,并对其进行了一些操作,例如插入节点、中序遍历、查找节点等。
原文地址: https://www.cveoy.top/t/topic/lOxf 著作权归作者所有。请勿转载和采集!