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