python 写一个二叉树
时间: 2023-07-01 17:11:44 浏览: 88
以下是使用Python实现一个二叉树的示例代码:
```python
class Node:
def __init__(self, data):
self.left = None
self.right = None
self.data = data
class BinaryTree:
def __init__(self):
self.root = None
def addNode(self, node, data):
if node is None:
self.root = Node(data)
else:
if data < node.data:
if node.left is None:
node.left = Node(data)
else:
self.addNode(node.left, data)
else:
if node.right is None:
node.right = Node(data)
else:
self.addNode(node.right, data)
def printInOrder(self, node):
if node is not None:
self.printInOrder(node.left)
print(node.data)
self.printInOrder(node.right)
# 测试代码
bt = BinaryTree()
bt.addNode(bt.root, 5)
bt.addNode(bt.root, 3)
bt.addNode(bt.root, 7)
bt.addNode(bt.root, 1)
bt.addNode(bt.root, 9)
bt.printInOrder(bt.root)
```
在这个示例代码中,我们定义了一个 Node 类来表示二叉树的节点,它包含左子节点、右子节点和数据。我们还定义了一个 BinaryTree 类,它包含一个根节点和 addNode() 和 printInOrder() 方法。
addNode() 方法用于向二叉树中添加新的节点。如果当前节点是空的,则创建一个新的根节点。否则,如果新数据小于当前节点的数据,则将其添加到左子树中,否则将其添加到右子树中。
printInOrder() 方法用于按顺序打印二叉树中的所有节点。它首先遍历左子树,然后打印当前节点,最后遍历右子树。
在测试代码中,我们创建了一个 BinaryTree 对象,并向其中添加了一些数据。然后,我们使用 printInOrder() 方法按顺序打印所有节点的值。
阅读全文