加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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 //顺序遍历

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读