# Definition for singly-linked list. class ListNode(object): def __init__(self, x): self.val = x self.next = None class DoubleNode(object): def __init__(self, key, val, pre=None, next=None): self.key = key self.val = val self.pre = pre self.next = next # Definition for a binary tree node. class TreeNode(object): def __init__(self, x): self.val = x self.left = None self.right = None class TrieNode(object): def __init__(self, end=False): self.children = [] for i in range(26): self.children.append(None) self.end = end def set_end(self): self.end = True @property def is_end(self): return self.end class RandomNode(object): def __init__(self, val, next, random): self.val = val self.next = next self.random = random class GraphNode(object): def __init__(self, val, neighbors): self.val = val self.neighbors = neighbors