数据结构算法 (树 的基本算法)

一、树的序列化 和反序列化

1) 将二叉树进行序列化  和反序列化; 使用的是前序.

 1 package com.tree;
 2 
 3 import java.util.LinkedList;
 4 import java.util.Queue;
 5 
 6 // 将一个两叉树 序列化成 字符串 ; 
 7 // 和将一字符串 反序列为一个树.
 8 public class TreeNode_Serialization {
 9     public static void main(String[] args) {
10         TreeNode_Serialization s = new TreeNode_Serialization();
11         String str = "2!3!10!#!#!12!123!#!#!#!18!100!#!#!#!"; // 前序
12         TreeNode node = s.pre_deserializationTreeNode(str);
13         s.test(node);
14         System.out.println();
15         System.out.println(s.pre_serializTreeNode(node));
16     }
17     // 将一个两叉树 序列化成 字符串
18     public String pre_serializTreeNode(TreeNode tree) {
19         if (tree == null) {
20             return "#!";
21         }
22         String str = tree.val + "!";
23         str += pre_serializTreeNode(tree.left);
24         str += pre_serializTreeNode(tree.right);
25         return str;
26     }
27     // 将一个 字符串 反序列为一个树;// 前序遍历反序列化
28     public TreeNode pre_deserializationTreeNode(String str) {
29         String[] arrStr = str.split("!");
30         Queue<String> qu = new LinkedList<String>();
31         for (String s : arrStr) {
32             qu.add(s);
33         }
34         return pre_deserializationTreeNodeCore(qu);
35     }
36     // 前序遍历反序列化。
37     private TreeNode pre_deserializationTreeNodeCore(Queue<String> qu) {
38         String str = qu.poll();
39         TreeNode tree = new TreeNode();
40         if ("#".equals(str)) {
41             return null;
42         }
43         tree.left = pre_deserializationTreeNodeCore(qu);
44         tree.val = Integer.valueOf(str);
45         tree.right = pre_deserializationTreeNodeCore(qu);
46         return tree;
47     }
48     public void test(TreeNode tree) {
49         if (tree != null) {
50             test(tree.left);
51             System.out.print(tree.val + " ");
52             test(tree.right);
53         }
54     }
55 }
View Code

2) 将二叉树进行序列化  和反序列化; 使用的是层次遍历.

二 、树的遍历(前中后【递归与非递归】,层次,显示结构的层次遍历)

  

猜你喜欢

转载自www.cnblogs.com/vincentbnu/p/9463734.html
今日推荐