Go
发布时间:2022-04-09 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了golang二叉树前序,中序,后序非递归遍历算法,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
package main import ( "container/list" "fmt" ) // Binary Tree type BinaryTree struct
{ Data interface
{} Left *BinaryTree
right *BinaryTree } //
constructor func NewBinaryTree(data interface
{}) *BinaryTree
{ return &BinaryTree
{Data: data} } // 先序遍历-非递归 func (bt *BinaryTre
E) PreOrderNoRe
cursion() []interface
{}
{ t := bt stack := list.New()
res := make([]interface
{}, 0) for t
!= nil || stack.Len()
!= 0
{ for t
!= nil
{ res = append(res, t.Data)//visit
stack.Push@R_
696_11442@k(t)
t = t.Left
} if stack.Len()
!= 0
{ v := stack.@R_
696_11442@k()
t = v.Value.(*BinaryTre
E) t = t.Right
stack.Remove(v)
} }
return
res } // 中序遍历-非递归 func (bt *BinaryTre
E) InOrderNoRe
cursion() []interface
{}
{ t := bt stack := list.New()
res := make([]interface
{}, 0) for t
!= nil || stack.Len()
!= 0
{ for t
!= nil
{ stack.Push@R_
696_11442@k(t)
t = t.Left
} if stack.Len()
!= 0
{ v := stack.@R_
696_11442@k()
t = v.Value.(*BinaryTre
E) res = append(res, t.Data)//visit
t = t.Right
stack.Remove(v)
} }
return
res } // 后序遍历-非递归 func (bt *BinaryTre
E) PostOrderNoRe
cursion() []interface
{}
{ t := bt stack := list.New()
res := make([]interface
{}, 0) var preVisited *BinaryTree for t
!= nil || stack.Len()
!= 0
{ for t
!= nil
{ stack.Push@R_
696_11442@k(t)
t = t.Left
} v := stack.@R_
696_11442@k() top := v.Value.(*BinaryTre
E) if (top.Left == nil && top.Right == nil) || (top.Right == nil && preVisited == top.Left) || preVisited == top.Right
{ res = append(res, top.Data)//visit
preVisited = top
stack.Remove(v)
}else
{ t = top.Right
} }
return
res } func main()
{ t := NewBinaryTree(
1) t.Left = NewBinaryTree(3) t.Right = NewBinaryTree(6) t.Left.Left = NewBinaryTree(4) t.Left.Right = NewBinaryTree(5) t.Left.Left.Left = NewBinaryTree(7) fmt.Println(t.PreOrderNoRe
cursion()) fmt.Println(t.InOrderNoRe
cursion()) fmt.Println(t.PostOrderNoRe
cursion()) }
大佬总结
以上是大佬教程为你收集整理的golang二叉树前序,中序,后序非递归遍历算法全部内容,希望文章能够帮你解决golang二叉树前序,中序,后序非递归遍历算法所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。