classCodec{public:// Encodes a tree to a single string.stringserialize(TreeNode*root){if(root==nullptr)return"";strings;queue<TreeNode*>q{{root}};while(!q.empty()){TreeNode*node=q.front();q.pop();if(node!=nullptr){s+=to_string(node->val)+" ";q.push(node->left);q.push(node->right);}else{s+="n ";}}returns;}// Decodes your encoded data to tree.TreeNode*deserialize(stringdata){if(data.empty())returnnullptr;istringstreamiss(data);stringword;iss>>word;TreeNode*root=newTreeNode(stoi(word));queue<TreeNode*>q{{root}};while(iss>>word){TreeNode*node=q.front();q.pop();if(word!="n"){node->left=newTreeNode(stoi(word));q.push(node->left);}iss>>word;if(word!="n"){node->right=newTreeNode(stoi(word));q.push(node->right);}}returnroot;}};
publicclassCodec{// Encodes a tree to a single string.publicStringserialize(TreeNoderoot){if(root==null)return"";StringBuildersb=newStringBuilder();Queue<TreeNode>q=newLinkedList<>(Arrays.asList(root));while(!q.isEmpty()){TreeNodenode=q.poll();if(node==null){sb.append("n ");}else{sb.append(node.val).append(" ");q.offer(node.left);q.offer(node.right);}}returnsb.toString();}// Decodes your encoded data to tree.publicTreeNodedeserialize(Stringdata){if(data.equals(""))returnnull;finalString[]vals=data.split(" ");TreeNoderoot=newTreeNode(Integer.parseInt(vals[0]));Queue<TreeNode>q=newLinkedList<>(Arrays.asList(root));for(inti=1;i<vals.length;i+=2){TreeNodenode=q.poll();if(!vals[i].equals("n")){node.left=newTreeNode(Integer.parseInt(vals[i]));q.offer(node.left);}if(!vals[i+1].equals("n")){node.right=newTreeNode(Integer.parseInt(vals[i+1]));q.offer(node.right);}}returnroot;}}
classCodec:defserialize(self,root:'TreeNode')->str:"""Encodes a tree to a single string."""ifnotroot:return''s=''q=deque([root])whileq:node=q.popleft()ifnode:s+=str(node.val)+' 'q.append(node.left)q.append(node.right)else:s+='n 'returnsdefdeserialize(self,data:str)->'TreeNode':"""Decodes your encoded data to tree."""ifnotdata:returnNonevals=data.split()root=TreeNode(vals[0])q=deque([root])foriinrange(1,len(vals),2):node=q.popleft()ifvals[i]!='n':node.left=TreeNode(vals[i])q.append(node.left)ifvals[i+1]!='n':node.right=TreeNode(vals[i+1])q.append(node.right)returnroot