编写堆栈包。
package stack
type Stack struct {
data []interface{}
}
func (s *Stack) IsEmpty() bool {
return len(s.data) == 0
}
func (s *Stack) Push(item interface{}) {
s.data = append(s.data, item)
//fmt.Println(s.data, item)
}
func (s *Stack) Pop() interface{} {
if len(s.data) == 0 {
return nil
}
index := len(s.data) - 1
res := s.data[index]
s.data = s.data[:index]
return res
}
然后尝试调用它
package main
import (
s "library/stack"
t "library/tree"
)
func preorderTraversal(root *t.TreeNode) []int {
res := make([]int, 0)
if root == nil {
return res
}
// iterative
var stack *s.Stack
stack.Push(root)
// TODO: more logic
return res
}
func main() {
left := t.TreeNode{1, nil, nil}
right := t.TreeNode{2, nil, nil}
root := t.TreeNode{0, &left, &right}
fmt.Println(preorderTraversal(&root))
}
但是我遇到了一个错误
stack.Push undefined (type *stack.Stack has no field or method Push)
这是什么问题?
编辑:添加树包只是为了方便
package tree
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
添加了基于Cerise Limón play.golang.org/p/E4JXjc-Pd0i
慕斯王
相关分类