
import java.util.*;
class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
public class Solution {
int index=-1;
//序列化,将对象转换成字符串
String Serialize(TreeNode root) {
StringBuilder sb=new StringBuilder();
if(root==null){
sb.append("#,");
return sb.toString();
}
sb.append(root.val+",");
sb.append(Serialize(root.left));
sb.append(Serialize(root.right));
return sb.toString();
}
//反序列化
TreeNode Deserialize(String str) {
index++;
String[]arr=str.split(",");
TreeNode node=null;
if(!arr[index].equals("#")){
node=new TreeNode(Integer.valueOf(arr[index]));
node.left=Deserialize(str);
node.right=Deserialize(str);
}
return node;
}
//二叉树的层序遍历
public String TreeBFS(TreeNode pRoot,String str)
{
Queue<TreeNode> arr=new LinkedList<TreeNode>();//存放元素的队列
arr.offer(pRoot);
boolean flag=false;
while(!arr.isEmpty())
{
TreeNode temp=arr.poll();
// System.out.println(temp.val);
str+=temp.val;
if(temp.left!=null)
{
arr.offer(temp.left);
}
if(temp.right!=null)
{
arr.offer(temp.right);
}
}
System.out.println(str);
return str;
}
public static void main(String[]args){
//System.out.println("Hello");
TreeNode root=new TreeNode(1);
root.left=new TreeNode(2);
root.right=new TreeNode(3);
root.left.left=new TreeNode(4);
root.left.right=new TreeNode(5);
root.right.left=new TreeNode(6);
root.right.right=new TreeNode(7);
Solution s=new Solution();
String str="";
s.TreeBFS(root,str);
}
}
还没有评论,来说两句吧...