2023-04-13 06:24PM
题目:
原二叉树[2 3 4 6 7 8], 使用InsertNode 函数插入新节点 5
输出[2 3 4 5 6 7 8]
代码如下:
package main
import "fmt"
// treeNode 结构体表示二叉树节点
type treeNode struct{
Val int
left *treeNode
right *treeNode
}
// createNode函数用于创建一个新的节点
func createNode(val int) *treeNode{
return &treeNode{Val: val}
}
// insertNode函数用于插入一个新节点
func insertNode(root *treeNode, node *treeNode) *treeNode{
// 如果根节点为空,则直接返回新的节点
if root == nil{
return node
}
// 如果新节点的值小于根节点的值,则该节点应该被插入根节点的左侧
if node.Val < root.Val{
root.left = insertNode(root.left, node)
// 如果新节点的值大于等于根节点的值,则该节点应该被插入根节点的右侧
}else{
root.right = insertNode(root.right, node)
}
return root
}
// inorderTraversal函数用于中序遍历二叉树,并返回节点值的数组
func inorderTraversal(root *treeNode, vals []int) []int{
// 如果根节点为空,则返回数组
if root == nil{
return vals
}
// 先遍历左子树
vals = inorderTraversal(root.left, vals)
// 将根节点的值加入到数组中
vals = append(vals, root.Val)
// 最后遍历右子树
vals = inorderTraversal(root.right, vals)
return vals
}
func main() {
// 创建根节点,并使用insertNode函数插入新节点
root := createNode(5)
insertNode(root, createNode(3))
insertNode(root, createNode(4))
insertNode(root, createNode(2))
insertNode(root, createNode(6))
insertNode(root, createNode(8))
insertNode(root, createNode(7))
// 中序遍历二叉树,验证是否正确插入
fmt.Println(inorderTraversal(root, []int{}))
}
结果如下:
[2 3 4 5 6 7 8]
登录
请登录后再发表评论。
评论列表:
目前还没有人发表评论