leetcode 将已排序的 数组/链表 转换为二叉搜索树(BST),Python实现
来源:互联网 发布:java.swing包 编辑:程序博客网 时间:2024/05/16 19:44
思路:不论是数组还是链表,递归地找到他的root(即序列的中点),并返回。
1. 将数组转换为二叉树:
# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: # @param num, a list of integers # @return a tree node # 12:37 def sortedArrayToBST(self, num): if not num: return None mid = len(num)//2 #“//”表示整数除法;“/”浮点数除法; root = TreeNode(num[mid]) left = num[:mid] right = num[mid+1:] root.left = self.sortedArrayToBST(left) root.right = self.sortedArrayToBST(right) return root
2. 将链表转换为二叉树:
# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# self.next = None# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution(object): def sortedListToBST(self, head): if not head: return None if not head.next: return TreeNode(head.val) Lroot = self.find_root(head) Troot = TreeNode(Lroot.val) Troot.left = self.sortedListToBST(head) Troot.right = self.sortedListToBST(Lroot.next) return Troot def find_root(self,head): #找到链表的中点作为后半部分的起点,并将链表切断。 if not head or not head.next: return head slow = head fast = head pre = head while fast and fast.next: pre = slow slow = slow.next fast = fast.next.next pre.next = None return slow
阅读全文
0 0
- leetcode 将已排序的 数组/链表 转换为二叉搜索树(BST),Python实现
- Convert Sorted Array to Binary Search Tree 将排序的数组转换为二叉搜索树
- 将排序数组转换为高度最小的二叉搜索树
- [LintCode 177] 把排序数组转换为高度最小的二叉搜索树(Python)
- 搜索二叉树(BST)的实现
- 数组——将排序数组转换为平衡二叉搜索树
- 把排序数组转换为高度最小的二叉搜索树(LintCode)
- 二叉树系列四:Leetcode#98判断二叉树是否为二叉搜索树(BST)
- Leetcode Convert Sorted Array to Binary Search Tree 有序数组转换成二叉搜索树BST
- 将有序数组转换为平衡二叉搜索树
- 将有序数组转换为平衡二叉搜索树
- 平衡二叉搜索树BST转换为双向链表
- BST二叉搜索树的实现
- 【C++】实现的二叉搜索树BST
- 二叉搜索树BST的C++实现
- 树:将二叉搜索树转换为排序的双向链表
- leetCode 108.Convert Sorted Array to Binary Search Tree(将排序数组转换为BST) 解题思路和方法
- 将已排好序的数组转换成高度平衡的二叉搜索树(BST)
- Oracle创建表空间
- Java该如何从入门到精通?
- 灰度共生矩阵
- 【scikit-learn】scikit-learn的线性回归模型
- 单步调试(F11)时会自动跳到ostream文件中解决方法
- leetcode 将已排序的 数组/链表 转换为二叉搜索树(BST),Python实现
- 微信小程序-思维脑图
- 1004. 成绩排名 (20) PAT(B级)
- Kotlin基础教程-HelloWorld
- [LeetCode]67. Add Binary
- JavaScript特点
- 1.Javabean属性
- HashSet,TreeSet,HashMap,一对一,一对多
- 加载外部OBJ模型-03