二叉树序列化反序列化
2022/9/16 23:47:12
本文主要是介绍二叉树序列化反序列化,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Golang代码
package main import ( "fmt" "strconv" "strings" ) type Treenode struct { Val int Left, Right *Treenode } func Serialization(node *Treenode) string { if node == nil { return "nil" } tmp := []string{strconv.Itoa(node.Val)} tmp = append(tmp, Serialization(node.Left), Serialization(node.Right)) return strings.Join(tmp, ",") } func Deserialize(s *[]string) *Treenode { if (*s)[0] == "nil" { *s = (*s)[1:] return nil } val, _ := strconv.Atoi((*s)[0]) root := &Treenode{val, nil, nil} *s = (*s)[1:] if len(*s) > 0 { root.Left = Deserialize(s) } if len(*s) > 0 { root.Right = Deserialize(s) } return root } func main() { root := Treenode{2, nil, nil} root.Left = &Treenode{1, nil, nil} root.Right = &Treenode{3, nil, nil} res := Serialization(&root) fmt.Println(res) //2,1,nil,nil,3,nil,nil node_arr := strings.Split(res, ",") de_root := Deserialize(&node_arr) fmt.Println(de_root) fmt.Println(de_root.Left) fmt.Println(de_root.Right) }
这篇关于二叉树序列化反序列化的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-22[开源]10.3K+ Star!轻量强大的开源运维平台,超赞!
- 2024-11-21Flutter基础教程:新手入门指南
- 2024-11-21Flutter跨平台教程:新手入门详解
- 2024-11-21Flutter跨平台教程:新手入门与实践指南
- 2024-11-21Flutter列表组件教程:初学者指南
- 2024-11-21Flutter列表组件教程:新手入门指南
- 2024-11-21Flutter入门教程:初学者必看指南
- 2024-11-21Flutter入门教程:从零开始的Flutter开发指南
- 2024-11-21Flutter升级教程:新手必读的升级指南
- 2024-11-21Flutter升级教程:轻松掌握Flutter版本更新