python:有序链表转换二叉搜索树示例代码
时间: 2023-01-15 17:38:28 浏览: 131
在转换有序链表到二叉搜索树的过程中,您需要遍历有序链表并依次将节点插入二叉搜索树中。下面是一个使用 Python 实现的示例代码:
```python
# 定义二叉树节点类
class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
# 定义有序链表节点类
class ListNode:
def __init__(self, val):
self.val = val
self.next = None
# 将有序链表转换为二叉搜索树
def sortedListToBST(head):
# 如果链表为空,返回空二叉树
if not head:
return None
# 如果链表只有一个节点,则返回一棵只有根节点的二叉树
if not head.next:
return TreeNode(head.val)
# 快慢指针找到链表的中点
slow = head
fast = head
prev = None
while fast and fast.next:
prev = slow
slow = slow.next
fast = fast.next.next
# 断开链表
prev.next = None
# 创建二叉树的根节点
root = TreeNode(slow.val)
# 递归构建二叉树的左子树和右子树
root.left = sortedListToBST(head)
root.right = sortedListToBST(slow.next)
return root
```
在上面的代码中,我们使用快慢指针找到链表的中点,然后将链表断开,并使用中点的值来创建二叉树的根节点。然后,我们递归地转换链表的左半
阅读全文