已知先序遍历和层序遍历确定二叉树代码
时间: 2024-11-22 11:37:30 浏览: 18
确定二叉树的代码实现,通常使用Python或类似的编程语言。下面是一个简单的示例,假设我们已经有了先序遍历(preorder)、层次遍历(level_order)数组,以及先序遍历的根节点值(root_val):
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def build_tree(preorder, level_order, root_val):
if not preorder or not level_order or preorder[0] != root_val:
return None
# 找到根节点在层次遍历中的位置
root_idx = level_order.index(root_val)
# 创建根节点
root = TreeNode(preorder[0])
# 分别构建左右子树
root.left = build_tree(preorder[1:root_idx+1], level_order[:root_idx], preorder[root_idx])
root.right = build_tree(preorder[root_idx+1:], level_order[root_idx+1:], None)
return root
# 示例用法
preorder = [3,9,20,15,7]
level_order = [9,3,20,15,7]
root_val = 3
tree_root = build_tree(preorder, level_order, root_val)
```
在这个函数中,我们首先检查输入的有效性,然后找到根节点的位置,接着递归地创建左右子树。注意,层次遍历的根节点对应于先序遍历的下一个节点。
阅读全文