image.png
package main
import "fmt"
//节点
type node struct{
key int
left *node
right *node
}
//构造函数
func NewNode(key int) *node{
return &node{key:key}
}
//添加节点
func (root *node) Insert(num int) *node{
if root == nil {
root := NewNode(num)
return root
}
if root.key >= num {
if root.left == nil { //左子树
root.left = NewNode(num)
} else {
root.left.Insert(num)
}
} else {
if root.right == nil { //右子树
root.right = NewNode(num)
} else {
root.right.Insert(num)
}
}
return root
}
//中序遍历二叉树
func inOrderTraverse(root *node){
if root == nil {
return;
}
if root.left != nil {
inOrderTraverse(root.left)
}
fmt.Println(root.key)
if root.right != nil {
inOrderTraverse(root.right)
}
}
func main(){
//测试6个元素的数组
arr := [6]int{5,2,1,7,9,3}
//初始根结点
root := NewNode(0)
for _,val := range arr {
root.Insert(val)
}
inOrderTraverse(root);
}
image.png
网友评论