写一份代码有二叉树的创建和二叉树的三种遍历和以二叉树的方式输出
时间: 2024-01-23 19:14:06 浏览: 12
以下是一个示例代码,用于创建二叉树并进行先序、中序和后序遍历,并以二叉树的形式输出:
```python
# 定义二叉树节点类
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
# 创建二叉树
def createBinaryTree(nodes, index):
if index < len(nodes):
if nodes[index] is None:
return None
root = TreeNode(nodes[index])
root.left = createBinaryTree(nodes, 2 * index + 1)
root.right = createBinaryTree(nodes, 2 * index + 2)
return root
return None
# 先序遍历
def preorderTraversal(root):
if root is None:
return []
return [root.val] + preorderTraversal(root.left) + preorderTraversal(root.right)
# 中序遍历
def inorderTraversal(root):
if root is None:
return []
return inorderTraversal(root.left) + [root.val] + inorderTraversal(root.right)
# 后序遍历
def postorderTraversal(root):
if root is None:
return []
return postorderTraversal(root.left) + postorderTraversal(root.right) + [root.val]
# 以二叉树的形式输出
def printBinaryTree(root, level=0):
if root is None:
return
printBinaryTree(root.right, level + 1)
print(' ' * level + str(root.val))
printBinaryTree(root.left, level + 1)
# 示例数据
nodes = [1, 2, 3, 4, 5, None, 6, None, None, 7]
# 创建二叉树
root = createBinaryTree(nodes, 0)
# 先序遍历
preorder = preorderTraversal(root)
print("先序遍历序列:", preorder)
# 中序遍历
inorder = inorderTraversal(root)
print("中序遍历序列:", inorder)
# 后序遍历
postorder = postorderTraversal(root)
print("后序遍历序列:", postorder)
# 以二叉树的形式输出
print("二叉树的形式输出:")
printBinaryTree(root)
```