剑指offer之二叉树的镜像

举报
chenyu 发表于 2021/07/27 00:00:58 2021/07/27
【摘要】 1题目 求二叉树A的镜像,就是对称图,比如下面的树B是树A的镜像 比如:               2                           2   ...

1题目

求二叉树A的镜像,就是对称图,比如下面的树B是树A的镜像
比如:
              2                           2
   树A  3    5      树B        5     3
        1  4  2  3              3   2  4  1 
 

 

 

 

 

 

 

 

2 代码实现


  
  1. #include <stdio.h>
  2. #define true 1
  3. #define false 0
  4. typedef struct Node
  5. {
  6. int value;
  7. struct Node* left;
  8. struct Node* right;
  9. } Node;
  10. void reverse_tree(Node *head)
  11. {
  12. if (head != NULL)
  13. {
  14. Node *temp = head->left;
  15. head->left = head->right;
  16. head->right = temp;
  17. reverse_tree(head->left);
  18. reverse_tree(head->right);
  19. }
  20. }
  21. void reverse_tree1(Node *head)
  22. {
  23. if (head == NULL)
  24. {
  25. return;
  26. }
  27. if (head->left == NULL && head->right == NULL)
  28. {
  29. return;
  30. }
  31. Node *temp = head->left;
  32. head->left = head->right;
  33. head->right = temp;
  34. //if (head->left != NULL)
  35. reverse_tree(head->left);
  36. //if (head->right != NULL)
  37. reverse_tree(head->right);
  38. }
  39. void printf_tree(Node *head)
  40. {
  41. if (head != NULL)
  42. {
  43. printf("val is: %d\n", head->value);
  44. printf_tree(head->left);
  45. printf_tree(head->right);
  46. }
  47. }
  48. int main()
  49. {
  50. /* 2
  51. * 3 5 5
  52. * 1 4 2 3 2 3
  53. *
  54. */
  55. Node head1, node1, node2, node3, node4, node5, node6;
  56. Node head2, node7, node8;
  57. head1.value = 2;
  58. node1.value = 3;
  59. node2.value = 5;
  60. node3.value = 1;
  61. node4.value = 4;
  62. node5.value = 2;
  63. node6.value = 3;
  64. head1.left = &node1;
  65. head1.right = &node2;
  66. node1.left = &node3;
  67. node1.right = &node4;
  68. node2.left = &node5;
  69. node2.right = &node6;
  70. node3.left = NULL;
  71. node3.right = NULL;
  72. node4.left = NULL;
  73. node4.right = NULL;
  74. node5.left = NULL;
  75. node5.right = NULL;
  76. node6.left = NULL;
  77. node6.right = NULL;
  78. head2.value = 5;
  79. node7.value = 2;
  80. node8.value = 3;
  81. head2.left = &node7;
  82. head2.right = &node8;
  83. node7.left = NULL;
  84. node7.right = NULL;
  85. node8.left = NULL;
  86. node8.right = NULL;
  87. printf_tree(&head1);
  88. printf("----\n");
  89. reverse_tree(&head1);
  90. printf_tree(&head1);

 

 

 

 

 

 

3 运行结果


  
  1. val is: 2
  2. val is: 3
  3. val is: 1
  4. val is: 4
  5. val is: 5
  6. val is: 2
  7. val is: 3
  8. ----
  9. val is: 2
  10. val is: 5
  11. val is: 3
  12. val is: 2
  13. val is: 3
  14. val is: 4
  15. val is: 1

 

文章来源: chenyu.blog.csdn.net,作者:chen.yu,版权归原作者所有,如需转载,请联系作者。

原文链接:chenyu.blog.csdn.net/article/details/89893731

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。