:type nums: List[int]
        :rtype: TreeNode
        """
        if not nums:
            return  None
        return self.buildBST(nums,0,len(nums)-1)

    def buildBST(self,nums,i,j):

        if i> j :
            return None
        if i == j:
            no = TreeNode(nums[i])
            return no
        mid = (i+j)//2
        root = TreeNode(nums[mid])
        left = self.buildBST(nums,i,mid-1)
        right = self.buildBST(nums,mid+1,j)
        root.left = left
        root.right = right
        return  root

if __name__ == '__main__':

    so = Solution()

    root = so.sortedArrayToBST([1,2,3,4,5,6,7])
    TreeNode.inOrderRec(root)
    print()
    TreeNode.preOrder(root)
コード例 #2
0
            t = TreeNode(begin)
            ans.append(t)
            return ans
        if begin + 1 == end:
            t1 = TreeNode(begin)
            t1.right = TreeNode(end)
            ans.append(t1)
            t2 = TreeNode(end)
            t2.left = TreeNode(begin)
            ans.append(t2)
            return ans
        for i in range(begin, end + 1):
            leftTreeSet = self.dfs(begin, i - 1)
            rightTreeSet = self.dfs(i + 1, end)
            for nodeL in leftTreeSet:
                for nodeR in rightTreeSet:
                    ro = TreeNode(i)
                    ro.left = nodeL
                    ro.right = nodeR
                    ans.append(ro)
        return ans


if __name__ == '__main__':

    so = Solution()
    ans = so.generateTrees(2)
    for n in ans:
        TreeNode.preOrder(n)
        print()
コード例 #3
0
            return ans
        if begin +1 == end:
            t1 = TreeNode(begin)
            t1.right = TreeNode(end)
            ans.append(t1)
            t2 = TreeNode(end)
            t2.left = TreeNode(begin)
            ans.append(t2)
            return  ans
        for i in range(begin,end+1):
            leftTreeSet = self.dfs(begin,i-1)
            rightTreeSet = self.dfs(i+1,end)
            for nodeL in leftTreeSet:
                for nodeR in rightTreeSet:
                    ro = TreeNode(i)
                    ro.left = nodeL
                    ro.right = nodeR
                    ans.append(ro)
        return ans


if __name__ == '__main__':

    so = Solution()
    ans =  so.generateTrees(2)
    for n in ans:
        TreeNode.preOrder(n)
        print()