SerializeBinaryTree标题描述请实现两个函数,分别用于序列化和反序列化二叉树。二叉树的序列化是指将二叉树按照一定的遍历方式将结果保存为一定格式的字符串,从而使内存中构建的二叉树能够持久化存储。序列化可以基于前序、中序、后序、层序的二叉树遍历方式进行修改。序列化的结果是一个字符串。序列化时,用某个符号表示一个空节点(#),以!开头指示节点值(值!)的结尾。二叉树的反序列化是指:根据一定遍历顺序得到的序列化后的字符串结果str,重构二叉树。比如我们可以把一棵只有根节点1的二叉树序列化为“1”,然后用自己的函数解析回二叉树标题描述*请实现两个函数,分别用于序列化和反序列化二叉树。*
*二叉树的序列化是指:将二叉树按照一定的遍历方式得到的结果保存为一定格式的字符串,从而使内存中构建的二叉树持久化存储。*可以根据前序、中序、后序、层序的二叉树遍历方式修改序列化。序列化的结果是一个字符串。序列化时,用*表示一个空节点(#),用!指示节点值(值!)的结尾。*
*二叉树的反序列化是指:根据一定遍历顺序得到的序列化后的字符串结果str,重构二叉树。*
*例如我们可以将一棵只有根节点1的二叉树序列化为“1”,然后通过我们自己的函数解析回二叉树*
*标题链接:*https://www.nowcoder.com/practice/cf7e25aa97c04cc1a68c8f040e71fb84?tpId=13&&tqId=11214&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking*/publicclassJz61{privateStringdeserializeStr;/***遍历**@paramroot*@return*/Stringserialize(TreeNoderoot){if(root==null){return"#";}returnroot.val+""+serialize(root.left)+""+serialize(root.right);}TreeNodedeserialize(Stringstr){deserializeStr=str;返回反序列化();}privateTreeNodedeserialize(){if(deserializeStr.length()==0){returnnull;}intindex=deserializeStr.indexOf("");字符串节点=索引==-1?deserializeStr:deserializeStr.substring(0,指数);deserializeStr=索引==-1?"":deserializeStr.substring(index+1);如果(node.equals("#")){返回null;}intval=Integer.valueOf(node);TreeNodet=newTreeNode(val);t.left=反序列化();t.right=反序列化();返回吨;}publicstaticvoidmain(String[]args){TreeNoderoot=TreeNode.testCase1();=新的Jz61();字符串序列化=jz61.serialize(root);System.out.println(序列化);TreeNoderootCopy=jz61.deserialize(serialize);System.out.println(rootCopy);}}【每日留言】愿你今天温柔优秀可爱果断一尘不染