上图是一种树数据结构,由n>=1个节点组成的有层次的关系集合,每个节点有0或多个子节点,没有父节点的节点称为跟节点root,有父节点但没有子节点的节点称为叶子节点。
为什么要有树数据结构,因为树是一种天然的组织结构,具有高效的性质,在很多场景,数据采用树结构存储后,会更高效
下面是树结构的一种实现类型:二分搜索树
(1)二分搜索数存储的数值要有可比性
(2)二分搜索树左子树的值都小于父节点,右子树的值都大于父节点
二分搜索树的定义和方法:该实现方法不存在重复元素
type node struct {
value *int
Left *node
Right *node
}
func NewNode() *node {
return &node{}
}
// 向搜索树中插入val:非递归算法
func (tree *node) Add1(val int) {
if tree.value == nil {
*tree = node{&val, new(node), new(node)}
return
}
for {
switch {
case *tree.value == val: