# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x# self.left = None# self.right = NoneclassCodec:defserialize(self,root):"""Encodes a tree to a single string. :type root: TreeNode :rtype: str """ifrootisNone:return""q=deque([root])ans=[]whileq:node=q.popleft()ifnode:ans.append(str(node.val))q.append(node.left)q.append(node.right)else:ans.append("#")return",".join(ans)defdeserialize(self,data):"""Decodes your encoded data to tree. :type data: str :rtype: TreeNode """ifnotdata:returnNonevals=data.split(",")root=TreeNode(int(vals[0]))q=deque([root])i=1whileq:node=q.popleft()ifvals[i]!="#":node.left=TreeNode(int(vals[i]))q.append(node.left)i+=1ifvals[i]!="#":node.right=TreeNode(int(vals[i]))q.append(node.right)i+=1returnroot# Your Codec object will be instantiated and called as such:# codec = Codec()# codec.deserialize(codec.serialize(root))
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */publicclassCodec{// Encodes a tree to a single string.publicStringserialize(TreeNoderoot){if(root==null){returnnull;}List<String>ans=newArrayList<>();Deque<TreeNode>q=newLinkedList<>();q.offer(root);while(!q.isEmpty()){TreeNodenode=q.poll();if(node!=null){ans.add(node.val+"");q.offer(node.left);q.offer(node.right);}else{ans.add("#");}}returnString.join(",",ans);}// Decodes your encoded data to tree.publicTreeNodedeserialize(Stringdata){if(data==null){returnnull;}String[]vals=data.split(",");inti=0;TreeNoderoot=newTreeNode(Integer.valueOf(vals[i++]));Deque<TreeNode>q=newArrayDeque<>();q.offer(root);while(!q.isEmpty()){TreeNodenode=q.poll();if(!"#".equals(vals[i])){node.left=newTreeNode(Integer.valueOf(vals[i]));q.offer(node.left);}++i;if(!"#".equals(vals[i])){node.right=newTreeNode(Integer.valueOf(vals[i]));q.offer(node.right);}++i;}returnroot;}}// Your Codec object will be instantiated and called as such:// Codec codec = new Codec();// codec.deserialize(codec.serialize(root));
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */classCodec{public:// Encodes a tree to a single string.stringserialize(TreeNode*root){if(!root){return"";}queue<TreeNode*>q{{root}};stringans;while(!q.empty()){autonode=q.front();q.pop();if(node){ans+=to_string(node->val)+" ";q.push(node->left);q.push(node->right);}else{ans+="# ";}}ans.pop_back();returnans;}// Decodes your encoded data to tree.TreeNode*deserialize(stringdata){if(data==""){returnnullptr;}stringstreamss(data);stringt;ss>>t;TreeNode*root=newTreeNode(stoi(t));queue<TreeNode*>q{{root}};while(!q.empty()){autonode=q.front();q.pop();ss>>t;if(t!="#"){node->left=newTreeNode(stoi(t));q.push(node->left);}ss>>t;if(t!="#"){node->right=newTreeNode(stoi(t));q.push(node->right);}}returnroot;}};// Your Codec object will be instantiated and called as such:// Codec codec;// codec.deserialize(codec.serialize(root));
/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */typeCodecstruct{}funcConstructor()Codec{returnCodec{}}// Serializes a tree to a single string.func(this*Codec)serialize(root*TreeNode)string{ifroot==nil{return""}q:=[]*TreeNode{root}ans:=[]string{}forlen(q)>0{node:=q[0]q=q[1:]ifnode!=nil{ans=append(ans,strconv.Itoa(node.Val))q=append(q,node.Left)q=append(q,node.Right)}else{ans=append(ans,"#")}}returnstrings.Join(ans,",")}// Deserializes your encoded data to tree.func(this*Codec)deserialize(datastring)*TreeNode{ifdata==""{returnnil}vals:=strings.Split(data,",")v,_:=strconv.Atoi(vals[0])i:=1root:=&TreeNode{Val:v}q:=[]*TreeNode{root}forlen(q)>0{node:=q[0]q=q[1:]ifx,err:=strconv.Atoi(vals[i]);err==nil{node.Left=&TreeNode{Val:x}q=append(q,node.Left)}i++ifx,err:=strconv.Atoi(vals[i]);err==nil{node.Right=&TreeNode{Val:x}q=append(q,node.Right)}i++}returnroot}/** * Your Codec object will be instantiated and called as such: * ser := Constructor(); * deser := Constructor(); * data := ser.serialize(root); * ans := deser.deserialize(data); */
/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } *//** * Encodes a tree to a single string. * * @param {TreeNode} root * @return {string} */varserialize=function(root){if(root===null){returnnull;}constans=[];constq=[root];letindex=0;while(index<q.length){constnode=q[index++];if(node!==null){ans.push(node.val.toString());q.push(node.left);q.push(node.right);}else{ans.push('#');}}returnans.join(',');};/** * Decodes your encoded data to tree. * * @param {string} data * @return {TreeNode} */vardeserialize=function(data){if(data===null){returnnull;}constvals=data.split(',');leti=0;constroot=newTreeNode(parseInt(vals[i++]));constq=[root];letindex=0;while(index<q.length){constnode=q[index++];if(vals[i]!=='#'){node.left=newTreeNode(+vals[i]);q.push(node.left);}i++;if(vals[i]!=='#'){node.right=newTreeNode(+vals[i]);q.push(node.right);}i++;}returnroot;};/** * Your functions will be called as such: * deserialize(serialize(root)); */
/** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNode left; * public TreeNode right; * public TreeNode(int x) { val = x; } * } */publicclassCodec{// Encodes a tree to a single string.publicstringserialize(TreeNoderoot){if(root==null){returnnull;}List<string>ans=newList<string>();Queue<TreeNode>q=newQueue<TreeNode>();q.Enqueue(root);while(q.Count>0){TreeNodenode=q.Dequeue();if(node!=null){ans.Add(node.val.ToString());q.Enqueue(node.left);q.Enqueue(node.right);}else{ans.Add("#");}}returnstring.Join(",",ans);}// Decodes your encoded data to tree.publicTreeNodedeserialize(stringdata){if(data==null){returnnull;}string[]vals=data.Split(',');inti=0;TreeNoderoot=newTreeNode(int.Parse(vals[i++]));Queue<TreeNode>q=newQueue<TreeNode>();q.Enqueue(root);while(q.Count>0){TreeNodenode=q.Dequeue();if(vals[i]!="#"){node.left=newTreeNode(int.Parse(vals[i]));q.Enqueue(node.left);}i++;if(vals[i]!="#"){node.right=newTreeNode(int.Parse(vals[i]));q.Enqueue(node.right);}i++;}returnroot;}}// Your Codec object will be instantiated and called as such:// Codec codec = new Codec();// codec.deserialize(codec.serialize(root));
/* public class TreeNode {* var val: Int* var left: TreeNode?* var right: TreeNode?* init(_ val: Int) {* self.val = val* self.left = nil* self.right = nil* }* }*/publicclassCodec{funcserialize(_root:TreeNode?)->String{guardletroot=rootelse{return"null"}varresult=[String]()varqueue=[TreeNode?]()queue.append(root)while!queue.isEmpty{letnode=queue.removeFirst()ifletnode=node{result.append("\(node.val)")queue.append(node.left)queue.append(node.right)}else{result.append("#")}}returnresult.joined(separator:",")}funcdeserialize(_data:String)->TreeNode?{ifdata=="null"{returnnil}letvals=data.split(separator:",").map{String($0)}vari=0letroot=TreeNode(Int(vals[i])!)varqueue=[TreeNode]()queue.append(root)i+=1while!queue.isEmpty{letnode=queue.removeFirst()ifvals[i]!="#"{node.left=TreeNode(Int(vals[i])!)queue.append(node.left!)}i+=1ifvals[i]!="#"{node.right=TreeNode(Int(vals[i])!)queue.append(node.right!)}i+=1}returnroot}}// Your Codec object will be instantiated and called as such:// let codec = Codec()// let serializedData = codec.serialize(root)// let deserializedTree = codec.deserialize(serializedData)