在Python中,将平衡二叉树的结果保存为数组通常涉及遍历二叉树并将节点值收集到数组中。平衡二叉树是一种特殊的二叉树,其中每个节点的左右子树的高度差不超过1。
以下是一个简单的Python示例,展示如何将平衡二叉树的中序遍历结果保存为数组:
class TreeNode:
def __init__(self, value=0, left=None, right=None):
self.value = value
self.left = left
self.right = right
def inorder_traversal(root, result):
if root:
inorder_traversal(root.left, result)
result.append(root.value)
inorder_traversal(root.right, result)
# 创建一个简单的平衡二叉树
root = TreeNode(10)
root.left = TreeNode(5)
root.right = TreeNode(15)
root.left.left = TreeNode(3)
root.left.right = TreeNode(7)
root.right.left = TreeNode(12)
root.right.right = TreeNode(18)
# 保存中序遍历结果为数组
result_array = []
inorder_traversal(root, result_array)
print(result_array) # 输出: [3, 5, 7, 10, 12, 15, 18]
问题:在遍历过程中出现栈溢出。 原因:递归深度过大,导致栈空间耗尽。 解决方法:
def inorder_traversal_iterative(root):
stack = []
result = []
current = root
while current or stack:
while current:
stack.append(current)
current = current.left
current = stack.pop()
result.append(current.value)
current = current.right
return result
# 使用迭代方法保存中序遍历结果为数组
result_array_iterative = inorder_traversal_iterative(root)
print(result_array_iterative) # 输出: [3, 5, 7, 10, 12, 15, 18]
通过上述方法,可以有效避免栈溢出的问题,并将平衡二叉树的遍历结果保存为数组。
领取专属 10元无门槛券
手把手带您无忧上云