Popularity
0.8
Stable
Activity
0.0
Stable
4
2
2

Programming language: Go
License: ISC License
Tags: Serialization    

go-lctree alternatives and similar packages

Based on the "Serialization" category.
Alternatively, view go-lctree alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of go-lctree or a related project?

Add another 'Serialization' Package

README

lctree :seedling:

lctree provides a CLI and Golang primitives to serialize and deserialize LeetCode binary trees (e.g. "[5,4,7,3,null,2,null,-1,null,9]").

Overview   |   Getting Started   |   Contributing   

API reference Go Report Card Coverage Status Build Status

Overview

  • Deserialize/Serialize
  • Walk Depth-First
  • Walk Breadth-First
  • Convert to DOT language for visualization
  • CLI (see [bin/](bin/))

Getting Started

Deserialize

package main

import (
    "fmt"

    "github.com/sbourlon/go-lctree"
)

// Type alias
type TreeNode = lctree.TreeNode

func 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:<nil> Right:0xc00008e020}

Serialize

package main

import (
    "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

package main

import (
    "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:<nil> Right:0xc00000c0a0}
&{Val:2 Left:0xc00000c0c0 Right:<nil>}
&{Val:3 Left:<nil> Right:<nil>}

Walk Breadth-First

package main

import (
    "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:<nil> Right:0xc00000c0a0}
depth: 1        <nil>
depth: 1        &{Val:2 Left:0xc00000c0c0 Right:<nil>}
depth: 2        &{Val:3 Left:<nil> Right:<nil>}
depth: 2        <nil>
depth: 3        <nil>
depth: 3        <nil>

Convert to DOT language for visualization

package main

import (
    "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:

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)


*Note that all licence references and agreements mentioned in the go-lctree README section above are relevant to that project's source code only.