Go语言搜索二叉树

搜索二叉树

package main

import (
“fmt”
)

type Tree struct {
data int
root *Tree
left *Tree
right *Tree
}

// 创建二叉树
func (tree *Tree) create_binary_tree(data int) {
var node = &Tree{}
node.data = data

if tree.root == nil {
tree.root = node
} else {
// 找到需要插入的节点
var back_node = &Tree{}
var current_node = tree.root

for current_node != nil {
back_node = current_node
if current_node.data > data {
current_node = current_node.left
} else {
current_node = current_node.right
}
}

// 插入该节点
if back_node.data > data {
back_node.left = node
} else {
back_node.right = node
}
}
}

// 遍历二叉树
func (tree *Tree) pre_travel_binary_tree(root *Tree) {
if root != nil {
tree.pre_travel_binary_tree(root.left)
fmt.Println(root.data)
tree.pre_travel_binary_tree(root.right)
}
}

func main() {
var tree = Tree{}
var arr = […]int{ 7,4,2,3,15,35,6,45,55,20,1,14,56,57,58 }
for i := 0; i < len(arr); i++ { tree.create_binary_tree(arr[i]) } // tree.data, tree.left, tree.right都是没有值的 // 也就是第一层是没有值的 // 存放在tree.root.data, tree.root.left, tree.root.right中 // 第二层存放在tree.root.left.data, tree.root.left.left, tree.root.left.right中 // 除了一个层的tree.root有值之外,其他root都没有值 tree.pre_travel_binary_tree(tree.root) } [/go]

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部