用先序遍历创建二叉树
时间: 2024-01-23 10:13:18 浏览: 67
以下是使用先序遍历创建二叉树的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):
if not preorder:
return None
root_val = preorder.pop(0)
root = TreeNode(root_val)
idx = 0
while idx < len(preorder) and preorder[idx] < root_val:
idx += 1
root.left = buildTree(preorder[:idx])
root.right = buildTree(preorder[idx:])
return root
```
以上代码中,我们定义了一个`TreeNode`类来表示二叉树的节点,其中包含节点的值`val`、左子节点`left`和右子节点`right`。`buildTree`函数接受一个先序遍历序列`preorder`作为参数,并返回一个二叉树的根节点。
在`buildTree`函数中,我们首先判断`preorder`是否为空,如果是,则返回`None`。否则,我们弹出`preorder`的第一个元素作为根节点的值`root_val`,并创建一个`TreeNode`对象`root`来表示根节点。
接下来,我们使用一个`while`循环来找到`preorder`中第一个大于等于`root_val`的元素的下标`idx`。这个下标将被用来将`preorder`分成左子树和右子树两个部分。
然后,我们递归地调用`buildTree`函数来构建左子树和右子树,并将它们分别赋值给`root`的左子节点`left`和右子节点`right`。最后,我们返回`root`作为整个二叉树的根节点。
阅读全文