編寫堆棧包。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 的 goplayground 代碼
1 回答

慕蓋茨4494581
TA貢獻1850條經驗 獲得超11個贊
您肯定需要實例化stack
變量,而不僅僅是創建一個nil
指針。然后它應該工作:
stack := &s.Stack{} stack.Push(root)
注意:讓我有點困惑的是錯誤消息。當我運行你的程序時,它會恐慌:panic: runtime error: invalid memory address or nil pointer dereference
- 1 回答
- 0 關注
- 103 瀏覽
添加回答
舉報
0/150
提交
取消