golang Tree二叉树

前端之家收集整理的这篇文章主要介绍了golang Tree二叉树前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

//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%v\n",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 //顺序遍历

原文链接:https://www.f2er.com/go/190073.html

猜你在找的Go相关文章