【Golang主题学习月】 刷题比玩游戏好多了,成就感越来越强,每天坚持刷一道题,每天练习30分钟,等8块腹肌,等大厂offer.

cololeetcode是啥r{red}{~}

我信任,假设在面试中遇到此题,逻辑清楚、正确表达出来、手撕

应该会超过一部分的面试者。

对树不熟悉的朋友,能够看面试技巧和注意事项看前面的根底练习题哦!

  • 二叉树之中序遍历-迭代、递归

  • 二叉树之前序遍历-迭代、递归

  • 二叉树之后序遍历-迭代、递归

  • 二叉树之层序遍历-迭代、递归

  • 二叉树之最大深度-迭代、递归

  • 二叉树之leetcode手机软件能够刷题吗对称二叉树-迭代、递归

  • 二叉树之路径总和|Go主题月 -迭代、递归

  • 从中序与后序遍历序列构造二叉树数组公式|Go主题月

  • 二叉树的最近公共先人|Go主题月

leecode 297. 二叉树的序列化与反序列化

序列化是将一面试个数据结构或许目标转换为接连的比特位的操作,然后能够将转换后的数据存储在一个文件或许内存中,一同也能够通过网络传输到另一个计算机环境,选用相反方法重构得到原数据。

请规划一个算法来完结二叉树的序列化与反序列化。

这儿不限制你的序列 / 反序列化算法执行逻辑,你只需求确保一个二叉树能够被序列化

为一个字符串并且将这个字符串反序列化为原始的树结构。

提示: 输公积金贷款入输出格式与 LeetCode 现在运用的方法一起,概况请参阅LeetCode 序列化二叉树的格式。你并非有必要选用这种方法,你也能够选用其他的方法处理这个问题。

示例 1:

二叉树的序列化与反序列化|Go主题月

输入:root = [1,2,工商银行3,null,null,4,5]

leetcode是干什么的出:[1,2,3,null,null,4,5]

示例 2:

输入:root = []

输出:[]

示例 3:

输入:root = [1]

输出:[1]

示例 4:

输入:root = [1,2]leetcode是啥
输出:[1,2]

提示:

树中结点数在规划 [0, 104] 内

-1000 <= Node.val <= 1000


参阅代码

界说一颗树

/**
* Definition for a binary tree node.
* type TreeNode struct {
*     Val inAPPt          // 根
*     Left *TreeNode   //左节leetcode怎样刷题点
*     Right *TreeNode  //右节点
* }
*/

GO语言版 递归

  1. 要知道这是一棵树,只是通过数组的方法表现出来的

    简略的用这颗树来举例

二叉树的序列化与反序列化|Go主题月

要害点 :

能够先序遍历这颗二叉树,遇到面试毛遂自荐空子树的时分序列化成 None,不然持续递归宫颈癌早期症状序列化。那么我们怎样反序列化呢?首要我们需求依据 , 把原先的序列切割开来得leetcode中文官网到先序遍历的元素列表,然后从左向右数组c语言遍历这个序列:

假设当时的元素为 Non面试毛遂自荐简略大方e,则当时为空树
不然先解析这棵树的左子树,再解析它的右leetcode刷题指南子树

type Codec struct {
l []string
}
func Constructor() CodecAPP {
r面试eturn Co数组排序dec{}
}
func rserialize(root *TreeNode, str s面试毛遂自荐3分钟通用tring) string {
if root == nil {
str += "ngoogleull,"
} else {
str += strconv.Itoa(root.Val) + ","
str = rserialize(root.Left, str)
str = rserial数组去重ize(root.Right, str)
}
return str
}
// Serializes a tree to a single strinleetcode刷题指南g.
func (this *Codec) serialize(root *TreeNode) string {
return rserialize(root, "数组指针")
}
// Deserializes your encoded data to tree.
func (面试常见问题及答复技巧this *Codec) deserialize(data string) *TreeNode {
l := strings.Split(data, ",")
for i := 0; i < len(l); i++ {
if l[i] != "" {
this.l = append(thisleetcode怎样刷题.l, l[i])
}
}
return this.rdeserialize()
}
func (appearancethis *Codec) rdeserialize() *面试毛遂自荐TreeNode {
if this.l[0] == "null" {
this.l = this.l[1:]
return nil
}
val, _ := strconv.Atoi(this.l[0])
root := &TreeNode{Val: val}
this.l = this.l[1:]
root.Left = this.rdeserialize()
root.Right = this.rdeappstoreserialize()
return root
}

诚心感谢帅逼靓女们能看到这儿,假设这个文章写得还不错,觉得有点东西的话

求点赞 求重视❤️ 求共享 对8块腹肌的我来说真的 非常有用!!!

假设本篇博客有任何差错,请批判指导,不胜感激 !❤️❤️❤️❤️