树的实现(go语言实现)

本文介绍了树的定义,包括结点、结点的度、树的度和深度等基本术语,特别讨论了二叉树的特性。文章还提供了一段使用Go语言实现树结构的代码。

树的定义

树是n个结点的有限集,它或空树;或为非空树,对于非空树T:
(1)有且仅有一个称为根的结点;
(2)除根结点以外的其余结点可分m(m>0)个互不相交的有限集,其中每一个集合本身又是一棵树,并称为根的子树。

树的基本术语

结点 :树的一个独立单元。
结点的度:结点拥有的子树数称为结点度的最大值。
树的度:树的度是树内各结点度的最大值。
树的深度:树中结点的最大次称为树的深度或高度。


二插树的性质

1.在二叉树的第i层上至多有2^(i-1)个结点
2.深度为k的二叉树至多有2^k-1个结点
3.对于任一颗二叉树T,如果其终端结点数为n0,度为2的结点树为n2,则n0=n2+1。

代码

package main

import "fmt"

type ElemType int

const MAX_SEIZE  = 100

type Stree struct {
	bitTree[MAX_SEIZE] ElemType
	pointer int
}
/**
初始化
 */
func STreeInit(t *Stree)  {
	t.pointer = 0
}

/**
插入根结点
 */
func STreeInsertRoot(t *Stree,e ElemType)  {
	t.bitTree[0] = e
	t.pointer++
}
/**
插入左结点
 */
func STreeInsertLeft(t *Stree,i int,e ElemType)  {
	if i>=MAX_SEIZE || i < 0 {
		fmt.Println("error")
		return
	}
	t.bitTree[2*(i-1)+1] = e
	t.pointer++
}

/**
插入右结点
 */
func StreeInsertRight(t *Stree,i int,e ElemType)  {
	if i>=MAX_SEIZE || i < 0 {
		fmt.Println("error")
		return
	}
	t.bitTree[2*(i-1)+2] = e
	t.pointer++
}

/**
删除结点
 */
func StreeDeleteLeft(t *Stree,i int,e ElemType)  {
	if i>=MAX_SEIZE || i < 0 {
		fmt.Println("error")
		return
	}
	t.bitTree[2*(i-1)+1] = 0
	t.pointer--
}

func StreeDeleteRight(t *Stree,i int,e ElemType)  {
	if i>=MAX_SEIZE || i < 0 {
		fmt.Println("error")
		return
	}
	t.bitTree[2*(i-1)+2] = 0
	t.pointer--
}

func main()  {
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值