golang Tree二叉树
发布时间:2020-12-16 18:36:45 所属栏目:大数据 来源:网络整理
导读://golang先序遍历创建二叉树 packagemainimport("container/list""fmt")typetreestruct{left*treeright*treedataint}funccreate(indexint,value[]int)(T*tree){T=tree{}T.data=value[index-1]fmt.Printf("index%vn",index)ifindexlen(value)-12*index=len(v
//golang先序遍历创建二叉树 packagemain import( "container/list" "fmt" ) typetreestruct{ left*tree right*tree dataint } funccreate(indexint,value[]int)(T*tree){ T=&tree{} T.data=value[index-1] fmt.Printf("index%vn",index) ifindex<len(value)-1&&2*index<=len(value)&&2*index+1<=len(value){ T.left=create(2*index,value) T.right=create(2*index+1,value) } returnT } funcshow(treeNode*tree){ iftreeNode!=nil{ fmt.Printf("%v",treeNode.data) iftreeNode.left!=nil{ show(treeNode.left) } iftreeNode.right!=nil{ show(treeNode.right) } }else{ return } } //依靠队列顺序输出 funcshow1(treeNode*tree){ l:=list.New() l.PushBack(treeNode) fortreeNode!=nil{ ifl.Front()!=nil{ fmt.Printf("%v",l.Front().Value.(*tree).data) treeNode=l.Front().Value.(*tree) }else{ break } iftreeNode.left!=nil{ l.PushBack(treeNode.left) } iftreeNode.right!=nil{ l.PushBack(treeNode.right) } ifl.Front()!=nil{ l.Remove(l.Front()) } } } funcmain(){ value:=[]int{1,2,3,4,5,6,7} TreeRoot:=create(1,value) show(TreeRoot)//先序 fmt.Printf("n") show1(TreeRoot)//顺序 } 输出结果: 1 2 4 5 3 6 7 //先序遍历 1 2 3 4 5 6 7 //顺序遍历 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |