二叉排序树转化为平衡二叉树
时间: 2023-12-27 19:25:15 浏览: 105
二叉排序树转化为平衡二叉树的过程可以通过旋转操作来实现。旋转操作包括左旋和右旋,通过调整节点的位置来保持树的平衡性。
具体步骤如下:
1. 遍历二叉排序树,将节点的值存储在一个数组中。
2. 根据数组构建平衡二叉树。可以使用递归的方式,选择数组的中间元素作为根节点,然后将数组分为左右两部分,分别构建左子树和右子树。3. 重复步骤2,直到所有节点都被插入到平衡二叉树中。
下面是一个示例代码,演示了如何将二叉排序树转化为平衡二叉树:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def sortedArrayToBST(nums):
if not nums:
return None
mid = len(nums) // 2
root = TreeNode(nums[mid])
root.left = sortedArrayToBST(nums[:mid])
root.right = sortedArrayToBST(nums[mid+1:])
return root
def inOrderTraversal(root):
if root:
inOrderTraversal(root.left)
print(root.val, end=" ")
inOrderTraversal(root.right)
# 示例数据
nums = [1, 2, 3, 4, 5, 6, 7, 8]
# 构建二叉排序树
bst_root = sortedArrayToBST(nums)
# 中序遍历二叉排序树
print("二叉排序树中序遍历结果:")
inOrderTraversal(bst_root)
print()
# 构建平衡二叉树
avl_root = sortedArrayToBST(nums)
# 中序遍历平衡二叉树
print("平衡二叉树中序遍历结果:")
inOrderTraversal(avl_root)
```
运行以上代码,可以得到二叉排序树和平衡二叉树的中序遍历结果。
阅读全文