如何将平衡二叉树的结果保存为python中的数组
How to save result of balanced binary tree as an array in python
下面的 Python 程序将给定的数组元素转换为高度平衡的二叉搜索树 (BST) 并打印构造的 BST 的遍历。我想知道如何将结果保存为数组。
class TreeNode(object):
def __init__(self, x):
self.val = x
self.left = None
self.right = None
def array_to_bst(array_nums):
if not array_nums:
return None
mid_num = len(array_nums)//2
node = TreeNode(array_nums[mid_num])
node.left = array_to_bst(array_nums[:mid_num])
node.right = array_to_bst(array_nums[mid_num+1:])
return node
def preOrder(node):
if not node:
return
print(node.val)
preOrder(node.left)
preOrder(node.right)
array_nums = [1,2,3,4,5,6,7]
print("Original array:")
print(array_nums)
result = array_to_bst(array_nums)
print("\nArray to a height balanced BST:")
print(preOrder(result))
只需将 preOrder(node)
函数更改为:
def preOrder(node):
if node is None:
return []
print(node.val)
res = [node.val]
res += preOrder(node.left)
res += preOrder(node.right)
return res
下面的 Python 程序将给定的数组元素转换为高度平衡的二叉搜索树 (BST) 并打印构造的 BST 的遍历。我想知道如何将结果保存为数组。
class TreeNode(object):
def __init__(self, x):
self.val = x
self.left = None
self.right = None
def array_to_bst(array_nums):
if not array_nums:
return None
mid_num = len(array_nums)//2
node = TreeNode(array_nums[mid_num])
node.left = array_to_bst(array_nums[:mid_num])
node.right = array_to_bst(array_nums[mid_num+1:])
return node
def preOrder(node):
if not node:
return
print(node.val)
preOrder(node.left)
preOrder(node.right)
array_nums = [1,2,3,4,5,6,7]
print("Original array:")
print(array_nums)
result = array_to_bst(array_nums)
print("\nArray to a height balanced BST:")
print(preOrder(result))
只需将 preOrder(node)
函数更改为:
def preOrder(node):
if node is None:
return []
print(node.val)
res = [node.val]
res += preOrder(node.left)
res += preOrder(node.right)
return res