ZBLOG

golang镜像二叉树

下面是使用 Golang 实现镜像二叉树的代码示例:

  1. package main
  2. import "fmt"
  3. // 二叉树节点定义
  4. type TreeNode struct {
  5. Val int
  6. Left *TreeNode
  7. Right *TreeNode
  8. }
  9. // 镜像二叉树函数
  10. func mirrorTree(root *TreeNode) *TreeNode {
  11. if root == nil { // 若根节点为空,则直接返回 nil
  12. return nil
  13. }
  14. root.Left, root.Right = mirrorTree(root.Right), mirrorTree(root.Left) // 递归交换左右子树
  15. return root
  16. }
  17. // 打印二叉树(中序遍历)
  18. func inorderTraversal(root *TreeNode) {
  19. if root == nil {
  20. return
  21. }
  22. inorderTraversal(root.Left)
  23. fmt.Print(root.Val, " ")
  24. inorderTraversal(root.Right)
  25. }
  26. func main() {
  27. // 构建测试用例二叉树
  28. root := &TreeNode{
  29. Val: 4,
  30. }
  31. node1 := &TreeNode{
  32. Val: 2,
  33. }
  34. node2 := &TreeNode{
  35. Val: 7,
  36. }
  37. node3 := &TreeNode{
  38. Val: 1,
  39. }
  40. node4 := &TreeNode{
  41. Val: 3,
  42. }
  43. node5 := &TreeNode{
  44. Val: 6,
  45. }
  46. node6 := &TreeNode{
  47. Val: 9,
  48. }
  49. root.Left = node1
  50. root.Right = node2
  51. node1.Left = node3
  52. node1.Right = node4
  53. node2.Left = node5
  54. node2.Right = node6
  55. fmt.Println("原始二叉树:")
  56. inorderTraversal(root)
  57. fmt.Println()
  58. mirrorRoot := mirrorTree(root)
  59. fmt.Println("镜像二叉树:")
  60. inorderTraversal(mirrorRoot)
  61. fmt.Println()
  62. }

这个示例代码中,首先定义了一个简单的 TreeNode 结构表示二叉树的节点。然后,通过递归实现了 mirrorTree 函数,用于交换每个节点的左右子树,从而得到镜像二叉树。最后,在 main 函数中构建了一个测试用例二叉树,并打印原始二叉树和镜像二叉树的中序遍历结果。

运行上述代码,将输出如下结果:

  1. 原始二叉树:
  2. 1 2 3 4 6 7 9
  3. 镜像二叉树:
  4. 9 7 6 4 3 2 1

可以看到,原始二叉树经过镜像操作后得到了对称性质的镜像二叉树。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=17793

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?