public class Codec
{
// Encodes a tree to a single string.
public string serialize(TreeNode root)
{
if (root == null)
return ""; Queue<TreeNode> queue = new Queue<TreeNode>();
StringBuilder result = new StringBuilder(); queue.Enqueue(root);
while (true)
{
if (queue.Count() == )
break; int nodesAtLevel = queue.Count();
StringBuilder list = new StringBuilder();
for (int i = ; i < nodesAtLevel; i++)
{
var node = queue.Dequeue();
if (node != null)
{
list.Append(node.val.ToString() + ",");
if (node.left != null)
queue.Enqueue(node.left);
else
queue.Enqueue(null); if (node.right != null)
queue.Enqueue(node.right);
else
queue.Enqueue(null);
}
else
{
list.Append("null" + ",");
} }
result.Append(list.ToString());
}
result.Remove(result.Length - , );
return result.ToString();
} // Decodes your encoded data to tree.
public TreeNode deserialize(string data)
{
if (data.Length == )
return null;
Queue<TreeNode> queue = new Queue<TreeNode>();
var tlist = data.Split(',');
var count = tlist.Length; foreach (var l in tlist)
{
if (l != "null")
{
var t = new TreeNode(int.Parse(l));
queue.Enqueue(t);
}
else
{
queue.Enqueue(null);
}
}
var root = queue.Dequeue();
var list = new List<TreeNode>();
list.Add(root);
while (queue.Any())
{
var temp = new List<TreeNode>();
for (int i = ; i < list.Count; i++)
{
var p = list[i];
var left = queue.Dequeue();
if (left != null)
{
p.left = left;
}
var right = queue.Dequeue();
if (right != null)
{
p.right = right;
}
if (p.left != null)
{
temp.Add(p.left);
}
if (p.right != null)
{
temp.Add(p.right);
}
}
list = temp;
}
return root;
}
}

最新文章

  1. 解决ie6 fixed 定位以及抖动问题
  2. eclipse生成doc文件乱码
  3. Android开发之火星坐标转换工具
  4. C#操作Excel文件(读取Excel,写入Excel)
  5. Vim 的补全模式加速器,轻松玩转全部 15 种自动补全模式
  6. 关于APlayer播放器在打包安装后提示“没有注册类”的解决办法
  7. Centos 多个mysql数据库
  8. cpu性能探究 :cache line 原理
  9. mongodb终端指令
  10. geotrellis使用(三十九)COG 写入更新
  11. Android-蓝牙的网络共享与连接分析
  12. python知识点
  13. Python实现 Typora数学公式 转 有道云笔记Markdown数学公式
  14. freenode configuration sasl authentication in weechat
  15. vue关于html页面id设置问题
  16. DataSet 读取xml 报错有非法字符
  17. pcre库
  18. mac下phpstrom安装主题和主题推荐
  19. 1) Spring_HelloWorld
  20. thinkphp模版常量替换机制

热门文章

  1. L337 Should We Relax About Screen Time?
  2. mysql慢查询----pt-query-digest详解慢查询日志(linux系统)
  3. 【oracle入门】Oracle数据库11g企业版主要优点
  4. Windows+Linux双系统所导致的时间不一致问题的原因及解决方案
  5. MVVM设计模式加RAC响应式编程
  6. IO流技术
  7. 解决Yii2中刷新网页时验证码不刷新的问题
  8. elasticsearch 拼音检索能力研究
  9. python2.7安装pip遇到ImportError: cannot import name HTTPSHandle
  10. 跨源资源共享(CORS)概念、实现(用Spring)、起源介绍