1 public static TreeNode buildByLevel(ArrayList<String>res,int index){ 2 if(index>=res.size()|| res.get(index).equals("#"))return null; 3 TreeNode root = new TreeNode(Integer.valueOf(res.get(index))); 4 root.left = buildByLevel (res,2*index+1); 5 root.right = buildByLevel (res,2*index+2); 6 return root; 7 }
1 public static void printLevel(TreeNode root, ArrayList<String>res){ 2 LinkedList<TreeNode> cur = new LinkedList<TreeNode>(); 3 cur.offer(root); 4 while(!cur.isEmpty()){ 5 LinkedList<TreeNode> next = new LinkedList<TreeNode>(); 6 for(TreeNode n:cur){ 7 if(n!=null){ 8 System.out.print(n.val+" "); 9 res.add(String.valueOf(n.val)); 10 if(n.left==null && n.right==null) continue; 11 next.offer(n.left); 12 next.offer(n.right); 13 } 14 else 15 System.out.print("# "); 16 res.add("#"); 17 } 18 cur = next; 19 } 20 }
Level order
1 public static TreeNode DeSerilize(ArrayList<String>res,int[] i){ 2 if(res.get(i[0]).equals("#")||i[0]==res.size()) return null; 3 TreeNode root = new TreeNode (Integer.valueOf(res.get(i[0]))); 4 ++i[0]; 5 root.left = DeSerilize(res,i); 6 ++i[0]; 7 root.right = DeSerilize(res,i); 8 return root; 9 }
1 public static void Serilize(TreeNode root, ArrayList<String>res){ 2 if(root==null){ 3 res.add("#"); 4 return; 5 } 6 res.add(String.valueOf(root.val)); 7 Serilize(root.left,res); 8 Serilize(root.right,res); 9 }
Preorder
Serilize/DeSerilize tree,布布扣,bubuko.com
原文:http://www.cnblogs.com/krunning/p/3617072.html