二叉树的数组顺序存储
时间: 2024-01-22 08:14:19 浏览: 73
二叉树的顺序存储
二叉树的数组顺序存储是指将二叉树的结点按照某种顺序存储在一维数组中,以便于对二叉树进行遍历和其他操作。具体实现方法是:将二叉树的根结点存储在数组下标为1的位置,然后按照从上到下、从左到右的顺序,依次将二叉树的结点存储在数组中。如果某个结点的左子树或右子树为空,则在数组中存储一个特殊的标记,表示该结点的左子树或右子树为空。
下面是一个示例代码,用于将二叉树按照数组顺序存储:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def buildTree(nums):
if not nums:
return None
n = len(nums)
root = TreeNode(nums[0])
queue = [root]
i = 1
while i < n:
node = queue.pop(0)
if nums[i] is not None:
node.left = TreeNode(nums[i])
queue.append(node.left)
i += 1
if i < n and nums[i] is not None:
node.right = TreeNode(nums[i])
queue.append(node.right)
i += 1
return root
def inorderTraversal(root):
if not root:
return []
res = []
stack = []
while root or stack:
while root:
stack.append(root)
root = root.left
root = stack.pop()
res.append(root.val)
root = root.right
return res
nums = [1, 2, 3, None, 4, 5, 6, None, None, 7, 8]
root = buildTree(nums)
print(inorderTraversal(root))
```
阅读全文