剑指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 代码实现


      #include <stdio.h>
      #define true 1
      #define false 0
      typedef struct Node
      {
      int value;
      struct Node* left;
      struct Node* right;
      } Node;
      void reverse_tree(Node *head)
      {
        if (head != NULL)
         {
      Node *temp = head->left;
      head->left = head->right;
      head->right = temp;
      reverse_tree(head->left);
      reverse_tree(head->right);
         }
      }
      void reverse_tree1(Node *head)
      {
        if (head == NULL)
         {
      return;
         }
        if (head->left == NULL && head->right == NULL)
         {
      return;
         }
        Node *temp = head->left;
        head->left = head->right;
        head->right = temp;
        //if (head->left != NULL)
      reverse_tree(head->left);
        //if (head->right != NULL)
      reverse_tree(head->right);
      }
      void printf_tree(Node *head)
      {
      if (head != NULL)
       {
      printf("val is: %d\n", head->value);
      printf_tree(head->left);
      printf_tree(head->right);
       }
      }
      int main()
      {
      /* 2
      * 3 5 5
      * 1  4  2  3 2   3
      *
      */
      Node head1, node1, node2, node3, node4, node5, node6;
      Node head2, node7, node8;
      head1.value = 2;
      node1.value = 3;
      node2.value = 5;
      node3.value = 1;
      node4.value = 4;
      node5.value = 2;
      node6.value = 3;
      head1.left = &node1;
      head1.right = &node2;
      node1.left = &node3;
      node1.right = &node4;
      node2.left = &node5;
      node2.right = &node6;
      node3.left = NULL;
      node3.right = NULL;
      node4.left = NULL;
      node4.right = NULL;
      node5.left = NULL;
      node5.right = NULL;
      node6.left = NULL;
      node6.right = NULL;
      head2.value = 5;
      node7.value = 2;
      node8.value = 3;
      head2.left = &node7;
      head2.right = &node8;
      node7.left = NULL;
      node7.right = NULL;
      node8.left = NULL;
      node8.right = NULL;
      printf_tree(&head1);
      printf("----\n");
      reverse_tree(&head1);
      printf_tree(&head1);
 

 

 

 

 

 

 

3 运行结果


      val is: 2
      val is: 3
      val is: 1
      val is: 4
      val is: 5
      val is: 2
      val is: 3
      ----
      val is: 2
      val is: 5
      val is: 3
      val is: 2
      val is: 3
      val is: 4
      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个月内不可修改。