请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

myTreeNode

老师,这个函数里面为什么要写myTreeNode{myNode.node.left}.postOrder(),而不直接写myNode.node.left.postOrder()呢?有点没理解

func (myNode *myTreeNode) postOrder() {
if myNode == nil || myNode.node == nil {
return
}

myTreeNode{myNode.node.left}.postOrder()
myTreeNode{myNode.node.right}.postOrder()
myNode.node.print()

}

正在回答

1回答

因为postOrder是定义在myTreeNode上的,不是tree.Node上的。直接写myNode.node.left.postOrder()会编译错误

0 回复 有任何疑惑可以回复我~
  • 提问者 qq_心晴_29 #1
    明白啦,谢谢老师
    回复 有任何疑惑可以回复我~ 2020-01-12 12:23:41
  • 老师,为什么这样是可以的,
    func (node *Node) Traverse() {
    	if node == nil {
    		return
    	}
    	node.Left.Traverse()
    	node.Print()
    	node.Right.Traverse()
    
    }
    
    Traverse() 不也是定义在Node之上的,为什么这里就可以node.Left.Traverse()   ?
    回复 有任何疑惑可以回复我~ 2020-02-11 19:17:09
  • node是指向Node的指针,而Traverse()是结构体Node的方法,node.Left也是指向Node的指针,所以可以node.Left.Traverse()。myNode.node.left时指针指向的是Node结构体了,而postOrder()是定义在myTreeNode上的,所以会报错
    回复 有任何疑惑可以回复我~ 2020-02-12 13:14:53
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信