golang ----------- 二叉树的建立

golang ----------- 二叉树的建立

1、由标明空子树的先跟遍历序列建立一颗二叉树的操作算法

var i = -1

func HaveEmptyCreate(arr []int) *TreeNode{

i=i+1

if i >= len(arr){

return nil

}

var t TreeNode

if arr[i] != 0 {

t = TreeNode{nil,arr[i],nil}

t.Left = HaveEmptyCreate(arr)

t.Right = HaveEmptyCreate(arr)

}else {

return nil

}

return &t

}

2、由完全二叉树的顺序存储结构建立其二叉链式存储结构

func TreeCreate(i int,arr []int) *TreeNode{

t := &TreeNode{nil,arr[i],nil}

if i<len(arr) && 2*i+1 < len(arr){

t.Left = TreeCreate(2*i+1,arr)

}

if i<len(arr) && 2*i+2 < len(arr) {

t.Right = TreeCreate(2*i+2,arr)

}

return t

}

3、由先根遍历序列和中根遍历序列建立一颗二叉树

func PreMidCreate(pa []int,ma []int,preI int,midI int,len int) *TreeNode {

if len > 0{

p := pa[preI]

i := 0

for ;i<len;i++ {

if p == ma[midI+i] {

break

}

}

t := TreeNode{nil,p,nil}

t.Left = PreMidCreate(pa,ma,preI+1,midI,i)

t.Right = PreMidCreate(pa,ma,preI+i+1,midI+i+1,len-1-i)

return &t

}

return nil

}

猜你喜欢

转载自blog.csdn.net/u010412301/article/details/86525536