File tree Expand file tree Collapse file tree 2 files changed +92
-0
lines changed
Expand file tree Collapse file tree 2 files changed +92
-0
lines changed Original file line number Diff line number Diff line change 1+ # Definition for a binary tree node.
2+ # class TreeNode:
3+ # def __init__(self, x):
4+ # self.val = x
5+ # self.left = None
6+ # self.right = None
7+
8+ class Solution :
9+ def levelOrder (self , root : TreeNode ) -> List [List [int ]]:
10+ if root is None :
11+ return []
12+
13+ vals = []
14+ level = 0
15+ queue = [(root , level )]
16+ while queue :
17+ # dequeue
18+ node , level = queue .pop (0 )
19+ if len (vals ) < level + 1 :
20+ vals .append ([node .val ])
21+ else :
22+ vals [level ].append (node .val )
23+
24+ # enqueue
25+ if node .left :
26+ queue .append ((node .left , level + 1 ))
27+ if node .right :
28+ queue .append ((node .right , level + 1 ))
29+ return vals
Original file line number Diff line number Diff line change 1+ # Definition for a binary tree node.
2+ class TreeNode :
3+ def __init__ (self , x ):
4+ self .val = x
5+ self .left = None
6+ self .right = None
7+
8+ from math import inf
9+ class Codec :
10+
11+ def serialize (self , root : TreeNode ) -> str :
12+ """Encodes a tree to a single string.
13+ """
14+ vals = []
15+ def pre_order (root ):
16+ if root is None :
17+ return ""
18+
19+ vals .append (str (root .val ))
20+ pre_order (root .left )
21+ pre_order (root .right )
22+ pre_order (root )
23+ return " " .join (vals )
24+
25+ def deserialize (self , data : str ) -> TreeNode :
26+ """Decodes your encoded data to tree.
27+ """
28+ if not data :
29+ return None
30+
31+ queue = data .split (" " )
32+
33+ def helper (q , min_value , max_value ):
34+ if not q :
35+ return
36+
37+ val = int (q [0 ])
38+ if val < min_value or val > max_value :
39+ return
40+ q .pop (0 )
41+ root = TreeNode (val )
42+ root .left = helper (q , min_value , val )
43+ root .right = helper (q , val , max_value )
44+ return root
45+ return helper (queue , - inf , inf )
46+
47+ def pre_order (root ):
48+ if root is None :
49+ return None
50+ print (root .val )
51+ pre_order (root .left )
52+ pre_order (root .right )
53+
54+ if __name__ == "__main__" :
55+
56+ root = TreeNode (2 )
57+ root .left = TreeNode (1 )
58+ root .right = TreeNode (3 )
59+
60+ codec = Codec ()
61+ node = codec .deserialize (codec .serialize (root ))
62+
63+ pre_order (node ) # 2 1 3
You can’t perform that action at this time.
0 commit comments