将顺序存储的二叉树转换为链式存储的递归算法
时间: 2024-05-07 19:21:04 浏览: 61
C语言 二叉树的链式存储实例
5星 · 资源好评率100%
以下是将顺序存储的二叉树转换为链式存储的递归算法:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def buildTree(arr, i, n):
# 如果当前节点的索引超出数组范围或者当前节点的值为None,则返回None
if i >= n or arr[i] is None:
return None
# 创建当前节点
root = TreeNode(arr[i])
# 递归构建左右子树
root.left = buildTree(arr, 2 * i + 1, n)
root.right = buildTree(arr, 2 * i + 2, n)
return root
```
该算法的时间复杂度为 $O(n)$,其中 $n$ 为二叉树节点数。
阅读全文