用python写一个二叉树模板
时间: 2023-08-31 13:41:48 浏览: 124
### 回答1:
我可以帮你写一个Python程序,实现二叉树的模板。下面是一个简单的例子:class Node:
def __init__(self, data):
self.data = data
self.left = None
self.right = None
# Tree
class Tree:
def __init__(self):
self.root = None
def getRoot(self):
return self.root
def add(self, data):
if self.root is None:
self.root = Node(data)
else:
self._add(data, self.root)
def _add(self, data, node):
if data < node.data:
if node.left is None:
node.left = Node(data)
else:
self._add(data, node.left)
else:
if node.right is None:
node.right = Node(data)
else:
self._add(data, node.right)
def find(self, data):
if self.root:
return self._find(data, self.root)
else:
return None
def _find(self, data, node):
if data == node.data:
return node
elif data < node.data and node.left is not None:
self._find(data, node.left)
elif data > node.data and node.right is not None:
self._find(data, node.right)
def deleteTree(self):
# garbage collector will do this for us.
self.root = None
### 回答2:
二叉树是一种常见的数据结构,它由节点组成,每个节点最多有两个子节点,分别为左子节点和右子节点。我们可以使用Python语言编写一个简单的二叉树模板。
首先,我们定义一个节点类来表示二叉树的节点。每个节点有一个值和两个指针,指向左子节点和右子节点。节点类的代码如下:
```python
class TreeNode:
def __init__(self, value):
self.val = value
self.left = None
self.right = None
```
接下来,我们可以使用递归的方式创建二叉树。假设我们有一个列表 `values`,其中存储了二叉树的节点值。我们可以通过遍历列表,依次创建每个节点,并将节点按照特定的规则连接起来。创建二叉树的函数代码如下:
```python
def createBinaryTree(values):
if not values:
return None
root = TreeNode(values[0])
queue = [root]
i = 1
while queue and i < len(values):
node = queue.pop(0)
if values[i] is not None:
node.left = TreeNode(values[i])
queue.append(node.left)
i += 1
if i < len(values) and values[i] is not None:
node.right = TreeNode(values[i])
queue.append(node.right)
i += 1
return root
```
以上代码中,我们使用队列来辅助创建二叉树。我们首先创建根节点,并将它加入队列。然后,挨个遍历列表中的节点值。对于每个节点,我们弹出队列中的头节点,并根据列表的值创建左子节点和右子节点。接下来,将这些新创建的节点加入队列。最后,返回树的根节点即可。
可以使用以下代码测试二叉树模板的功能:
```python
values = [1, 2, 3, None, 5, 6, 7]
root = createBinaryTree(values)
# 打印二叉树
def printBinaryTree(root):
if not root:
return
print(root.val)
printBinaryTree(root.left)
printBinaryTree(root.right)
printBinaryTree(root)
```
以上代码中的 `values` 列表表示以下二叉树的结构:
```
1
/ \
2 3
/ \
5 6
/
7
```
输出结果为:
```
1
2
3
5
6
7
```
以上是一个基本的二叉树模板,可以根据需要进行扩展和修改,来满足更复杂的二叉树操作。
阅读全文