標籤:col tree 演算法 分享 span 非遞迴 == als private
一、樹的序列化 和還原序列化
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) 將二叉樹進行序列化 和還原序列化; 使用的是層次遍曆.
二 、樹的遍曆(前中後【遞迴與非遞迴】,層次,顯示結構的層次遍曆)
資料結構演算法 (樹 的基本演算法)