Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sbourlon/go-lctree
go-lctree provides a CLI and Go primitives to serialize and deserialize LeetCode binary trees (e.g. "[5,4,7,3,null,2,null,-1,null,9]").
https://github.com/sbourlon/go-lctree
leetcode leetcode-golang
Last synced: about 2 months ago
JSON representation
go-lctree provides a CLI and Go primitives to serialize and deserialize LeetCode binary trees (e.g. "[5,4,7,3,null,2,null,-1,null,9]").
- Host: GitHub
- URL: https://github.com/sbourlon/go-lctree
- Owner: sbourlon
- License: isc
- Created: 2020-05-04T05:39:46.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2020-06-03T21:19:42.000Z (over 4 years ago)
- Last Synced: 2024-04-22T13:32:15.788Z (8 months ago)
- Topics: leetcode, leetcode-golang
- Language: Go
- Homepage:
- Size: 1.66 MB
- Stars: 4
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
- awesome-go - go-lctree - Provides a CLI and primitives to serialize and deserialize [LeetCode binary trees](https://support.leetcode.com/hc/en-us/articles/360011883654-What-does-1-null-2-3-mean-in-binary-tree-representation). (Serialization / HTTP Clients)
- zero-alloc-awesome-go - go-lctree - Provides a CLI and primitives to serialize and deserialize [LeetCode binary trees](https://support.leetcode.com/hc/en-us/articles/360011883654-What-does-1-null-2-3-mean-in-binary-tree-representation). (Serialization / HTTP Clients)
- awesome-go-extra - go-lctree - lctree provides a CLI and Go primitives to serialize and deserialize LeetCode binary trees (e.g. "[5,4,7,3,null,2,null,-1,null,9]").|3|2|0|2020-05-04T05:39:46Z|2020-06-03T21:19:42Z| (Serialization / HTTP Clients)
README
# lctree :seedling:
lctree provides a CLI and Golang primitives to serialize and deserialize [LeetCode binary trees](https://support.leetcode.com/hc/en-us/articles/360011883654-What-does-1-null-2-3-mean-in-binary-tree-representation) (e.g. "[5,4,7,3,null,2,null,-1,null,9]").
[Overview](#overview) | [Getting Started](#getting-started) | [Contributing](#contributing)
[![API reference](https://img.shields.io/badge/godoc-reference-5272B4)](https://pkg.go.dev/github.com/sbourlon/go-lctree?tab=doc) [![Go Report Card](https://goreportcard.com/badge/github.com/sbourlon/go-lctree)](https://goreportcard.com/report/github.com/sbourlon/go-lctree) [![Coverage Status](https://coveralls.io/repos/github/sbourlon/go-lctree/badge.svg?branch=master)](https://coveralls.io/github/sbourlon/go-lctree?branch=master) [![Build Status](https://travis-ci.org/sbourlon/go-lctree.svg?branch=master)](https://travis-ci.org/sbourlon/go-lctree)
## Overview
- Deserialize/Serialize
- Walk Depth-First
- Walk Breadth-First
- Convert to [DOT language](https://graphviz.gitlab.io/_pages/doc/info/lang.html) for visualization
- CLI (see [bin/](bin/))## Getting Started
### Deserialize
```golang
package mainimport (
"fmt""github.com/sbourlon/go-lctree"
)// Type alias
type TreeNode = lctree.TreeNodefunc mySolution(root *TreeNode) {
fmt.Printf("root: %+v\n", root)
return
}func main() {
tree := lctree.Deserialize("[1,null,2,3]")
mySolution(tree)
}
```
Output:
```
root: &{Val:1 Left: Right:0xc00008e020}
```### Serialize
```golang
package mainimport (
"fmt""github.com/sbourlon/go-lctree"
)type TreeNode = lctree.TreeNode
func mySolution() *TreeNode {
return lctree.Deserialize("[1,null,2,3]")
}func main() {
tree := mySolution()
fmt.Println(lctree.Serialize(tree))
}
```
Output:
```
[1,null,2,3]
```### Walk Depth-First
```golang
package mainimport (
"fmt""github.com/sbourlon/go-lctree"
)type TreeNode = lctree.TreeNode
func mySolution() *TreeNode {
return lctree.Deserialize("[1,null,2,3]")
}func main() {
tree := mySolution()walkFn := func(n *TreeNode) error {
fmt.Printf("%+v\n", n)
return nil
}tree.WalkDepthFirst(walkFn)
}
```
Output:
```
&{Val:1 Left: Right:0xc00000c0a0}
&{Val:2 Left:0xc00000c0c0 Right:}
&{Val:3 Left: Right:}
```### Walk Breadth-First
```golang
package mainimport (
"fmt""github.com/sbourlon/go-lctree"
)type TreeNode = lctree.TreeNode
func mySolution() *TreeNode {
return lctree.Deserialize("[1,null,2,3]")
}func main() {
tree := mySolution()walkFn := func(n *TreeNode, depth int) error {
fmt.Printf("depth: %d\t%+v\n", depth, n)
return nil
}tree.WalkBreadthFirst(walkFn)
}
```
Output:
```
depth: 0 &{Val:1 Left: Right:0xc00000c0a0}
depth: 1
depth: 1 &{Val:2 Left:0xc00000c0c0 Right:}
depth: 2 &{Val:3 Left: Right:}
depth: 2
depth: 3
depth: 3
```### Convert to DOT language for visualization
```golang
package mainimport (
"fmt""github.com/sbourlon/go-lctree"
)type TreeNode = lctree.TreeNode
func mySolution() *TreeNode {
return lctree.Deserialize("[10,5,15,null,null,6,20]")
}func main() {
tree := mySolution()
fmt.Println(tree.DOT())
}
```
Output:
```dot
digraph {
graph [ordering="out"];
10;
5;
15;
6;
20;
10 -> 5;
10 -> 15;
15 -> 6;
15 -> 20;
}
```then convert into a png picture (e.g. tree.png):
```
$ dot -Tpng -o tree.png tree.dot
```
Output:![tree.png](img/tree.png "Tree PNG image from DOT")
## Contributing
Pull-requests, feature requests and issues are welcome.## License
[ISC license](LICENSE.md)