人话? ?二叉树转成字符串,字符串能还原该二叉树
官解的这种方式应该是自顶向下遍历,遍历过程记录节点?
另外也可以自底向上建树
?自底向上和自顶向下的区别和适用范围?先占坑。看看后面题有没碰到的
题看了很久,题解也看了好几家,还是基础不牢,先知道怎么建树
实际上题目已经提示了,剩下就是建树的过程了?
import java.util.*;
public class Solution {
String Serialize(TreeNode root) {
if(root==null)
return "None,";
String leftStr=Serialize(root.left);//这里不需要+“,”,从底下往上返回都是带了“,"
String rightStr=Serialize(root.right);//加了",", 存在两个逗号就会分割出空串
return root.val+","+leftStr+rightStr;
}
TreeNode Deserialize(String str) {
if(str==null||str.length()==0)
return null;
String strs[] = str.split(",");
Queue<String> queue = new LinkedList<>(Arrays.asList(strs));
return reBuild(queue);
}
TreeNode reBuild(Queue<String> queue)
{
if(queue.isEmpty())
return null;
String str=queue.poll();
if(str.equals("None"))//==是对象的比较用equals
return null;
TreeNode root=new TreeNode(Integer.parseInt(str));
root.left=reBuild(queue);
root.right=reBuild(queue);
return root;
}
}
|