leetcode 1382. 将二叉搜索树变平衡 【二叉搜索树】

在这里插入图片描述
思路:

首先将二叉搜索树由中序遍历得到有序的节点序列。

然后创建一棵平衡二叉树。

code:

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def balanceBST(self, root: TreeNode) -> TreeNode:
        def inorder(root):
            if root:
                inorder(root.left)
                nodes.append(root.val)
                inorder(root.right)

        def build_tree(l, r):
            mid = (l + r) // 2
            print(mid)
            node = TreeNode(nodes[mid], None, None)
            if l <= mid - 1:
                node.left = build_tree(l, mid - 1)
            if r >= mid + 1:
                node.right = build_tree(mid + 1, r)
            return node

        nodes = []
        inorder(root)
        return build_tree(0, len(nodes) - 1)


版权声明:本文为bmicnj原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。