Go语言程序:打印二叉树的高度
二叉树最多有两个子节点,高度指的是树的层数。本文将通过两个例子来查找二叉树的高度。在这篇 Go 语言文章中,我们将编写程序来打印二叉树的高度。
语法
func append(slice, element_1, element_2…, element_N) []T
append 函数用于向数组切片添加值。它接受多个参数。第一个参数是要向其添加值的数组,后跟要添加的值。然后,该函数返回包含所有值的最终数组切片。
funclen(v Type) int
len() 函数用于获取任何参数的长度。它接受一个参数作为要查找其长度的数据类型变量,并返回一个整数,该整数是变量的长度。
算法
步骤 1 − 创建一个 Node 结构体,并在该结构体中创建三个字段:left 和 right(类型为 node)以及 data(类型为 int)。
步骤 2 − 创建一个函数 get_height,其参数为根节点。
步骤 3 − 在函数中,检查根节点是否为空,如果是,则返回 0。
步骤 4 − 如果条件不成立,则使用 root.left 递归查找左子树的高度。
步骤 5 − 同样,使用 root.right 递归查找右子树的高度。
步骤 6 − 然后,使用 if 条件检查左高度是否大于右高度,如果是,则返回左高度 + 1(其中 1 代表根元素)。
步骤 7 − 但是,如果左高度小于右高度,则返回右高度 + 1。
步骤 8 − 在 main 函数中,通过设置左子树和右子树中的数据来创建一个树。
步骤 9 − 调用 get_height 函数,并传入 root 作为输入参数来计算树的高度。
示例 1
在这个例子中,将递归调用左子树和右子树来计算树的高度。树将被创建,数据将被设置在左子树和右子树中。
package main
import "fmt"
type Node struct {
data int
left *Node
right *Node
}
func get_height(root *Node) int {
if root == nil {
return 0
} else {
left_height := get_height(root.left)
right_height := get_height(root.right)
if left_height>right_height {
return left_height + 1
} else {
return right_height + 1
}
}
}
func main() {
root := &Node{
data: 10,
left: &Node{
data: 20,
left: &Node{
data: 40,
left: nil,
right: nil,
},
right: &Node{
data: 50,
left: nil,
right: nil,
},
},
right: &Node{
data: 30,
left: nil,
right: nil,
},
}
fmt.Println("Height of the binary tree is:", get_height(root))
}
输出
Height of the binary tree is: 3
示例 2
在这个例子中,将使用队列来添加树当前层级的节点,即左子树和右子树。然后,这些节点将被出队,并返回树的高度。
package main
import "fmt"
type Node struct {
data int
left *Node
right *Node
}
func get_height(root *Node) int {
if root == nil {
return 0
}
var v []*Node
var level_size int
height := 0
v = append(v, root)
for len(v) > 0 {
level_size = len(v)
height++
for i := 0; i<level_size; i++ {
node := v[0]
v = v[1:]
if node.left != nil {
v = append(v, node.left)
}
if node.right != nil {
v = append(v, node.right)
}
}
}
return height
}
func main() {
root := &Node{
data: 10,
left: &Node{
data: 20,
left: &Node{
data: 40,
left: nil,
right: nil,
},
right: &Node{
data: 50,
left: nil,
right: nil,
},
},
right: &Node{
data: 30,
left: nil,
right: nil,
},
}
fmt.Println("Height of the binary tree is:", get_height(root))
}
输出
Height of the binary tree is: 3
结论
在这篇文章中,我们研究了如何使用两个例子来执行打印二叉树高度的程序。在第一个例子中,我们递归调用左子树和右子树来计算树的高度;在第二个例子中,我们使用队列来计算高度。
数据结构
网络
关系型数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP