用列表创建二叉树,用python代码实现
时间: 2023-09-17 15:05:45 浏览: 100
### 回答1:
使用Python代码创建二叉树的一种常用方法是使用列表:class Node:
def __init__(self, val):
self.val = val
self.left = None
self.right = None# Function to create a binary tree from the given array
def createBinaryTree(arr, root, i, n):
if i < n:
temp = Node(arr[i])
root = temp
root.left = createBinaryTree(arr, root.left, 2 * i + 1, n)
root.right = createBinaryTree(arr, root.right, 2 * i + 2, n)
return root
### 回答2:
要用列表创建二叉树,可以使用python代码进行实现。首先,我们需要定义一个类来表示二叉树的节点。
```python
class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
```
接下来,我们可以使用递归的方式来构建二叉树。假设给定的列表是一个层序遍历的结果,我们可以从第一个元素开始依次遍历列表,并将每个元素添加到对应的位置上。
```python
def createBinaryTree(nums):
if not nums:
return None
root = TreeNode(nums[0])
queue = [root]
i = 1
while queue and i < len(nums):
node = queue.pop(0)
if nums[i] is not None:
node.left = TreeNode(nums[i])
queue.append(node.left)
i += 1
if i < len(nums) and nums[i] is not None:
node.right = TreeNode(nums[i])
queue.append(node.right)
i += 1
return root
```
这里我们使用一个队列来辅助构建二叉树,队列中始终保存着我们需要处理的节点。从队列中弹出节点后,我们根据列表中的元素值来创建新的节点,并将其添加到弹出节点的左子树或者右子树上。
例如,给定列表 [3, 9, 20, None, None, 15, 7],我们可以使用以下代码来创建对应的二叉树。
```python
nums = [3, 9, 20, None, None, 15, 7]
root = createBinaryTree(nums)
```
该代码会创建一个如下所示的二叉树:
```
3
/ \
9 20
/ \
15 7
```
这样,我们就成功使用列表创建了一个二叉树。
阅读全文