Skip to content

Commit a9ad8cd

Browse files
committed
排序列表转换为二分查找树
1 parent 7fd8b4a commit a9ad8cd

1 file changed

Lines changed: 33 additions & 0 deletions

File tree

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# -*- coding: utf-8 -*-
2+
3+
class Solution:
4+
"""
5+
@param head: The first node of linked list.
6+
@return: a tree node
7+
"""
8+
def sortedListToBST(self, head):
9+
# write your code here
10+
if not head:
11+
return None
12+
# 通过两个指针,一个一步一个两步将链表分为前后两段。
13+
first_node, second_node = head, head.next
14+
prev = None
15+
while second_node:
16+
if second_node:
17+
second_node = second_node.next
18+
if second_node:
19+
second_node = second_node.next
20+
prev = first_node
21+
first_node = first_node.next
22+
else:
23+
break
24+
else:
25+
break
26+
new_head = first_node.next
27+
if prev:
28+
prev.next = None
29+
root = TreeNode(first_node.val)
30+
if head != first_node:
31+
root.left = self.sortedListToBST(head)
32+
root.right = self.sortedListToBST(new_head)
33+
return root

0 commit comments

Comments
 (0)