树的定义
树是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() {
}