Skip to content

Commit f75a587

Browse files
committed
leetcode.com 426. Convert Binary Search Tree to Sorted Doubly Linked List
문제 링크: https://leetcode.com/problems/convert-binary-search-tree-to-sorted-doubly-linked-list/
1 parent 74dc530 commit f75a587

File tree

2 files changed

+75
-0
lines changed

2 files changed

+75
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# Definition for a Node.
2+
from typing import Optional, List
3+
4+
5+
class Node:
6+
def __init__(self, val, left=None, right=None):
7+
self.val = val
8+
self.left = left
9+
self.right = right
10+
11+
12+
class Solution:
13+
def __init__(self):
14+
self.root: Optional[Node] = None
15+
self.prev: Optional[Node] = None
16+
self.list: List[Optional[Node]] = []
17+
18+
def treeToDoublyList(self, root: Optional[Node]) -> Optional[Node]:
19+
if not root:
20+
return None
21+
22+
self.inorder(root)
23+
24+
for node in self.list:
25+
self.visit(node)
26+
27+
return self.root
28+
29+
def append(self, node: Optional[Node]):
30+
self.list.append(node)
31+
print(node.val)
32+
33+
def visit(self, node: Optional[Node]):
34+
if not self.root:
35+
self.root = node
36+
self.prev = node
37+
self.prev.left = node
38+
self.prev.right = node
39+
else:
40+
if self.root == self.prev:
41+
self.prev.right = node
42+
self.prev.left = node
43+
node.left = self.prev
44+
node.right = self.prev
45+
self.prev = node
46+
else:
47+
self.prev.right = node
48+
node.left = self.prev
49+
node.right = self.root
50+
self.root.left = node
51+
self.prev = node
52+
53+
54+
def inorder(self, node: Optional[Node]):
55+
if node.left:
56+
self.inorder(node.left)
57+
58+
self.append(node)
59+
60+
if node.right:
61+
self.inorder(node.right)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
from unittest import TestCase
2+
from main import Solution, Node
3+
4+
class TestSolution(TestCase):
5+
def test1_tree_to_doubly_list(self):
6+
sol = Solution()
7+
node1 = Node(1)
8+
node3 = Node(3)
9+
node2 = Node(2, node1, node3)
10+
node5 = Node(5)
11+
node4 = Node(4, node2, node5)
12+
answer = sol.treeToDoublyList(node4)
13+
print(answer.val)
14+
self.assertEqual(0, 0)

0 commit comments

Comments
 (0)