algorithm001 / algorithm

119 stars 152 forks source link

[007- Week2] 构建一个常用的二叉树类库 golang #328

Open v1xingyue opened 5 years ago

v1xingyue commented 5 years ago

二叉树最近操作比较多,发现操作相对比较繁琐,尤其是刷leetcode的时候,线上测试有完整的环境和测试用例。本地测试就会相对麻烦。 所以,抽象出了一个简单的操作函数库,后期会继续扩充。

二叉树基本操作

分为几个功能:

//后续遍历

type LoopHandler func(x vtype)

func PostLoopTree(tree *node, fn LoopHandler) {
    if tree == nil {
        return
    }
    PostLoopTree(tree.left, fn)
    PostLoopTree(tree.right, fn)
    if fn != nil {
        fn(tree.data)
    }
}
v1xingyue commented 5 years ago

基于以上的类库,可以有一种很酷的写法 :

l := Node(32)
l.addRight(2).addLeft(15).addLeft(16).addLeft(34).addRight(50)