您当前的位置: 首页 > 

IT之一小佬

暂无认证

  • 0浏览

    0关注

    1192博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

最小高度树

IT之一小佬 发布时间:2021-04-18 10:25:30 ,浏览量:0

最小高度树

给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。

示例:

给定有序数组: [-10,-3,0,5,9],

一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树:

          0           / \         -3   9         /   /       -10  5 

示例代码:

# Definition for a binary tree node.
class TreeNode(object):
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None


class Solution(object):

    def sorted_array_to_bst(self, nums):
        """
        :type nums: List[int]
        :rtype: TreeNode
        """
        if not nums:
            return
        mid = len(nums) // 2
        root = TreeNode(nums[mid])
        root.left = self.sorted_array_to_bst(nums[:mid])
        root.right = self.sorted_array_to_bst(nums[mid + 1:])
        return root

    def print_tree(self, root):
        """
        中序遍历
        :return:
        """
        if not root:
            return
        self.print_tree(root.left)
        print(root.val, end=' ')
        self.print_tree(root.right)


#  test
li = [-10, -3, 0, 5, 9]
tree = Solution()
root = tree.sorted_array_to_bst(li)
tree.print_tree(root)

运行结果:

 

关注
打赏
1665675218
查看更多评论
立即登录/注册

微信扫码登录

0.0392s