编写创建二叉树然后先序、中序、后序遍历二叉树的算法完整代码
时间: 2023-10-29 14:17:17 浏览: 100
关于一个数据结构的一个i算法的描述,是二叉树的遍历问题,只有源代码,但是是可以直接运行的,是用C写的二叉树遍历问题.zip
以下是创建二叉树并进行先序、中序、后序遍历的 Python 代码:
```python
# 定义二叉树节点
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
# 创建二叉树
def buildTree(preorder, inorder):
if not preorder:
return None
root = TreeNode(preorder[0])
index = inorder.index(preorder[0])
root.left = buildTree(preorder[1:index+1], inorder[:index])
root.right = buildTree(preorder[index+1:], inorder[index+1:])
return root
# 先序遍历
def preorderTraversal(root):
if not root:
return []
return [root.val] + preorderTraversal(root.left) + preorderTraversal(root.right)
# 中序遍历
def inorderTraversal(root):
if not root:
return []
return inorderTraversal(root.left) + [root.val] + inorderTraversal(root.right)
# 后序遍历
def postorderTraversal(root):
if not root:
return []
return postorderTraversal(root.left) + postorderTraversal(root.right) + [root.val]
# 测试样例
preorder = [1,2,4,5,3,6,7]
inorder = [4,2,5,1,6,3,7]
root = buildTree(preorder, inorder)
print(preorderTraversal(root)) # [1, 2, 4, 5, 3, 6, 7]
print(inorderTraversal(root)) # [4, 2, 5, 1, 6, 3, 7]
print(postorderTraversal(root)) # [4, 5, 2, 6, 7, 3, 1]
```
其中,先序遍历、中序遍历、后序遍历的递归实现都比较简单,主要是在创建二叉树的过程中需要注意细节。在创建二叉树时,先序遍历的第一个元素是根节点,可以根据该元素在中序遍历中的位置,将中序遍历分为左子树和右子树部分,然后递归地创建左子树和右子树。
阅读全文