用Python实现数组转成完全二叉树
时间: 2023-07-12 19:46:48 浏览: 97
python 将有序数组转换为二叉树的方法
首先,需要明确完全二叉树的定义:在一棵二叉树中,除了最后一层外,每一层都是满的,最后一层的节点都靠左排列。
实现数组转成完全二叉树的步骤如下:
1. 定义一个空的二叉树,根节点为数组的第一个元素。
2. 从数组的第二个元素开始,依次将元素插入二叉树中。
3. 对于第 i 个节点,其父节点为 (i-1)//2,左子节点为 2*i+1,右子节点为 2*i+2。
4. 如果数组中的元素已经全部插入二叉树中,那么就构建完成。
下面是用 Python 实现数组转成完全二叉树的代码:
```python
class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def array_to_tree(arr):
if not arr:
return None
root = TreeNode(arr[0])
stack = [root]
i = 1
while i < len(arr):
node = stack.pop(0)
if i < len(arr):
node.left = TreeNode(arr[i])
stack.append(node.left)
i += 1
if i < len(arr):
node.right = TreeNode(arr[i])
stack.append(node.right)
i += 1
return root
```
使用示例:
```python
arr = [1, 2, 3, 4, 5, 6, 7]
root = array_to_tree(arr)
```
此时,root 就是转换后的完全二叉树的根节点。
阅读全文