剑指offer61-序列化二叉树

序列化二叉树

https://www.nowcoder.com/practice/cf7e25aa97c04cc1a68c8f040e71fb84?tpId=13&tqId=11214&rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

题目描述
请实现两个函数,分别用来序列化和反序列化二叉树
二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)。
二叉树的反序列化是指:根据某种遍历顺序得到的序列化字符串结果str,重构二叉树。

对于处理二叉树的题目的几种思路:
(1)递归
(2)使用栈
(3)使用队列
连续刷的这几道题目都适用

import java.util.Queue;
import java.util.LinkedList;
/*
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    String Serialize(TreeNode root) {
        StringBuilder result = new StringBuilder("");
        if(root != null){
            //先访问根节点
            result.append(String.valueOf(root.val));
            //offer poll peek
            Queue<TreeNode> queue = new LinkedList<TreeNode>();
            queue.offer(root);//需要根据队列中存储的元素来作为访问下一个节点的依据。
            while(!queue.isEmpty()){
                //把队列元素的左右子树进行访问,然后加入到队列中。
                TreeNode head = queue.poll();
                if(head.left!= null || head.right!= null){
                    if(head.left == null)
                        result.append(",#");
                    else{
                        result.append("," +

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

小白刷剑指offer 文章被收录于专栏

跟着小白一起刷剑指offer,通过讨论加深印象吧~ 没有人不学习就能够掌握知识,知识就是需要学习的~

全部评论
学习了答主的答案,层序遍历序列化,且叶子节点没有加#;需要请教的问题是:反序列化是如何处理叶子节点的? 例如:层序遍历 12345,其中2为叶子节点;4、5的父节点是3;反序列化按答主的答案,4,5的父节点变成2了,感觉有点不对?
2 回复 分享
发布于 2020-07-14 10:48
不太对~
点赞 回复 分享
发布于 2021-08-01 00:46
日常打卡
点赞 回复 分享
发布于 2020-07-26 08:54
小姐姐很很厉害啊,现在我每次找答案的时候,都会先找一下你的答案(笑哭脸)。
点赞 回复 分享
发布于 2020-04-26 09:26
想问个愚蠢的问题,题目中要求每个value结束加!,这里加的是“,”但是也AC了,这是一样的意思吗?小白不太理解,谢谢
点赞 回复 分享
发布于 2020-04-17 17:34

相关推荐

不愿透露姓名的神秘牛友
昨天 17:13
想去,但是听说加班强度实在难崩,所以拒绝了,现在有点心梗对面hr感觉也是实习生,打电话的时候怪紧张的,但是感觉人很好嘞
水中水之下水道的鼠鼠:哥们这不先去体验一下,不行再跑呗,大不了混个实习经历(有更好的转正offer就当我没说)
点赞 评论 收藏
分享
06-16 15:04
黑龙江大学 Java
零OFFER战士:另一个版本查看图片
点赞 评论 收藏
分享
湫湫湫不会java:写的很杂,连自己都不知道找什么工作的感觉,只是要份工作。针对自己稍微有点优势的方向好好整份简历投投吧,然后这杂的简历就辅助投投,因为自己认为的优势可能也不是很大的优势all in可能失业,自己也没有啥很想的方向还是可以用这通用的碰碰运气吧,加油
点赞 评论 收藏
分享
评论
15
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务