Python二叉树的实现实例
什么是二叉树?
二叉树是一种特殊的树形结构,它包含一个根节点,每个节点最多有两个子节点,分别为左子节点和右子节点。
如何实现二叉树?
在 Python 中,可以通过定义一个包含节点值、左子树和右子树的二叉树类来实现二叉树。
1. 实现一个二叉树节点类
这个类包含了节点的值和左右子树。代码如下:
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
在这个类中,我们定义了一个初始化方法,其中包含节点的值 val,左子树 left 和右子树 right,它们都默认为 None。
2. 实现二叉树类
二叉树类包含了根节点和一些基本操作方法,如插入节点和遍历等。代码如下:
class BinaryTree:
def __init__(self):
self.root = None
def add_node(self, val):
if self.root is None:
self.root = TreeNode(val)
return
curr = self.root
while True:
if val < curr.val:
if curr.left:
curr = curr.left
else:
curr.left = TreeNode(val)
break
elif val > curr.val:
if curr.right:
curr = curr.right
else:
curr.right = TreeNode(val)
break
def inorder(self, node):
if node is not None:
self.inorder(node.left)
print(node.val)
self.inorder(node.right)
首先,我们在类的初始化方法中定义了二叉树的根节点 self.root 为 None。
其次,我们实现了一个添加节点的方法 add_node(val),它会根据大小比较来决定节点的插入位置。
最后,我们实现了一个中序遍历的方法 inorder(node),它会递归遍历子树,并输出节点的值。
3. 示例说明
考虑一个包含以下节点值的二叉树:
7
/ \
5 9
/ \ / \
2 6 8 10
我们可以使用二叉树类来实例化一个树对象,并逐个添加节点。对于这个例子,代码如下:
tree = BinaryTree()
tree.add_node(7)
tree.add_node(5)
tree.add_node(2)
tree.add_node(6)
tree.add_node(9)
tree.add_node(8)
tree.add_node(10)
接着,我们可以调用中序遍历方法来遍历这个二叉树:
tree.inorder(tree.root)
输出结果为:
2
5
6
7
8
9
10
可以看到,我们得到了一个按照节点值升序排列的序列。
另外一个示例,我们创建一个只有一个节点的二叉树,并遍历它:
tree = BinaryTree()
tree.add_node(1)
tree.inorder(tree.root)
输出结果为:
1
总结
通过定义二叉树节点类和二叉树类,我们可以很容易地实现一个二叉树,并且可以使用简单的方法来遍历它。在实际开发中,二叉树被广泛应用于算法、数据结构和人工智能等领域,是一种十分重要和基础的数据结构。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python二叉树的实现实例 - Python技术站