剑指offer题62
来源:互联网 发布:建筑三维软件 编辑:程序博客网 时间:2024/06/04 00:57
package jianzhioffer;import java.util.Scanner;import jianzhioffer.BinaryTree;/** * 请实现两个函数,分别用来序列化和反序列化二叉树 * 所谓序列化指的是遍历二叉树为字符串;所谓反序列化指的是依据字符串重新构造成二叉树。 *//* //树节点public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/public class Solution62 {/* * 依据前序遍历序列来序列化二叉树,因为前序遍历序列是从根结点开始的。当在遍历二叉树时碰到Null指针时,这些Null指针被序列化为一个特殊的字符“#”。 * 另外,结点之间的数值用逗号隔开。*/static int index = -1; //计数变量 static String Serialize(TreeNode root) { StringBuffer sb = new StringBuffer(); 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(); } static TreeNode Deserialize(String str) { index++; int len = str.length(); if(index >= len){ return null; } String[] newstr = str.split(","); TreeNode node = null; if(!newstr[index].equals("#")){ node = new TreeNode(Integer.valueOf(newstr[index])); node.left = Deserialize(str); node.right = Deserialize(str); } return node; } public static void main(String[] args) { Scanner sc = new Scanner(System.in);TreeNode tree1 = new TreeNode(5);TreeNode tree2 = new TreeNode(3);TreeNode tree3 = new TreeNode(7);TreeNode tree4 = new TreeNode(2);TreeNode tree5 = new TreeNode(4);TreeNode tree6 = new TreeNode(6);TreeNode tree7 = new TreeNode(8);tree1.left = tree2; tree1.right = tree3; tree2.left = tree4; tree2.right = tree5; tree3.left = tree6; tree3.right = tree7; System.out.println(Serialize(tree1)); BinaryTree bt = new BinaryTree(); System.out.println("反序列化二叉树的前序遍历结果:"); bt.preOrder(Deserialize(Serialize(tree1)));}}
阅读全文
0 0
- 剑指offer题62
- 剑指Offer-62
- 剑指offer第一题
- 剑指offer-题
- 剑指offer第一题
- 剑指Offer第一题
- 剑指offer(题三)
- 剑指offer第二题
- 剑指offer第三题
- 剑指offer第四题
- 剑指offer第五题
- 剑指offer题一
- 剑指offer题二
- 剑指offer题七
- 剑指offer题六
- 【剑指offer】第二题
- 【剑指offer】第三题
- 剑指offer题四
- 安卓高手之路 图形系统(3 底层SurfceFlinger系统)
- css完成显示隐藏的效果
- 安卓高手之路 图形系统(4 Measure的算法)
- 宏定义
- JAVA设计模式之抽象工厂模式
- 剑指offer题62
- 【leetcode】38. Count and Say
- 安卓高手之路之图形系统【5】安卓ListView和EditText配合使用时的注意事项。
- 数据存储- tmpfs+LevelDB+SSDB
- Frogger(弗洛伊德变形)
- 安卓高手之路之图形系统(6)requestLayout的流程
- ARKit从入门到精通(7)-ARCamera介绍
- POJ 2407-Relatives (欧拉函数)
- 大人们营造的世界