编写堆栈包。package stacktype 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 mainimport ( 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 treetype TreeNode struct { Val int Left *TreeNode Right *TreeNode}添加了基于Cerise Limón play.golang.org/p/E4JXjc-Pd0i
1 回答
慕斯王
TA贡献1864条经验 获得超2个赞
您肯定需要实例化变量,而不仅仅是创建一个指针。然后它应该工作:stacknil
stack := &s.Stack{}
stack.Push(root)
注意:让我有点困惑的是错误消息。当我运行你的程序时,它会惊慌失措:panic: runtime error: invalid memory address or nil pointer dereference
- 1 回答
- 0 关注
- 87 浏览
添加回答
举报
0/150
提交
取消