Serialize and Deserialize tree

来源:互联网 发布:windows 辅助技术 编辑:程序博客网 时间:2024/06/05 03:28

Serialize and Deserialize tree: 但是要自己写node structure 和 用linkedlist去存

package tree;import java.util.*;import z_dataStructure.TreeNode;public class SerializationAndDe {public LinkedList<Integer> s(TreeNode root) {LinkedList<Integer> ret = new LinkedList<>();if (root == null) {return ret;}Deque<TreeNode> queue = new ArrayDeque<>();queue.offer(root);ret.add(root.val);while (!queue.isEmpty()) {TreeNode tn = queue.poll();if (tn.left != null) {queue.offer(tn.left);ret.add(tn.left.val);} else {ret.add(null);}if (tn.right != null) {queue.offer(tn.right);ret.add(tn.right.val);} else {ret.add(null);}}return ret;}public TreeNode d(LinkedList<Integer> list) {if (list.isEmpty()) {return null;}Iterator<Integer> it = list.iterator();TreeNode ret = new TreeNode(it.next());Deque<TreeNode> queue = new ArrayDeque<>();queue.offer(ret);while (!queue.isEmpty()) {TreeNode tn = queue.poll();Integer left = it.next();Integer right = it.next();if (left != null) {tn.left = new TreeNode(left);queue.offer(tn.left);}if (right != null) {tn.right = new TreeNode(right);queue.offer(tn.right);}}return ret;}public static void main(String[] args) {TreeNode tn1 = new TreeNode(1);TreeNode tn2 = new TreeNode(2);TreeNode tn3 = new TreeNode(3);TreeNode tn4 = new TreeNode(4);TreeNode tn5 = new TreeNode(5);TreeNode tn6 = new TreeNode(6);TreeNode tn7 = new TreeNode(7);TreeNode tn8 = new TreeNode(8);tn1.left = tn2;tn1.right = tn3;tn2.left = tn4;tn3.left = tn5;tn5.left = tn6;tn5.right = tn7;tn6.left = tn8;SerializationAndDe ss = new SerializationAndDe();TreeNode r = ss.d(ss.s(tn1));System.out.println(ss.sameTree(tn1, r));TreeNode r2 = ss.d(ss.s(null));System.out.println(ss.sameTree(null, r2));return;}private boolean sameTree(TreeNode r1, TreeNode r2) {if (r1 == null && r2 == null)return true;if (r1 != null && r2 != null && r1.val == r2.val)return sameTree(r1.left, r2.left) && sameTree(r1.right, r2.right);return false;}}


0 0
原创粉丝点击