N-Array Tree to Binary Tree
https://leetcode.com/problems/encode-n-ary-tree-to-binary-tree/

Last updated
https://leetcode.com/problems/encode-n-ary-tree-to-binary-tree/

Last updated
"""
# Definition for a Node.
class Node(object):
def __init__(self, val=None, children=None):
self.val = val
self.children = children
"""
"""
# Definition for a binary tree node.
class TreeNode(object):
def __init__(self, x):
self.val = x
self.left = None
self.right = None
"""
class Codec:
def encode(self, root):
"""Encodes an n-ary tree to a binary tree.
:type root: Node
:rtype: TreeNode
"""
if root == None:
return None
node = TreeNode(root.val)
children = root.children
if len(children) > 0:
node.left = self.encode(children[0])
curr = node.left
for child in children[1:]:
curr.right = self.encode(child)
curr = curr.right
return node
def decode(self, data):
"""Decodes your binary tree to an n-ary tree.
:type data: TreeNode
:rtype: Node
"""
if not data:
return None
node = Node(data.val,[])
children = []
if data.left:
children.append(self.decode(data.left))
curr = data.left
while curr.right:
children.append(self.decode(curr.right))
curr = curr.right
node.children = children
return node