剑指offer之二叉树的镜像

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 0typedef 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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/288452.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php is_dir 判断是否存在这目录

is_dir 可以用来判断目录是否存在 例如&#xff1a; <?phpvar_dump(is_dir(e11/)); 判断当前目录是否存在下的e11这个目录是否存在&#xff0c;结果输出&#xff1a; bool(false) 那么假如我存在一个名字为e的目录&#xff0c;那么&#xff1a; var_dump(is_dir(e/))…

C#操作Office.word(三)

前面两篇博客讲解了怎么通过程序控制word的生成&#xff0c;包括生成文字、添加表格、添加图片等。这篇博客主要说一下怎么把word图片转换成pdf。 using System; using System.Collections.Generic; using System.Linq; using System.Text;using Microsoft.Office.Core;namespa…

exchange2013 owa-outlook界面语言

环境&#xff1a;Exchange 2013客户需求&#xff1a;在海外有分支机构&#xff0c;希望这些人的owa和outlook都是英文一般在登陆owa时&#xff0c;通过用户名和密码验证完成后会提示选择语言和时区&#xff0c;根据客户端的浏览器里面的语言会有一个默认选项英文系统中文系统Ou…

ADO.NET提供的Connection类总结

各种数据接口的连接方式 一、ADO连接 1、连接access数据库 set conn=Server.CreateObject("ADODB.Connection") conn.open "Driver={Microsoft Access Driver (*.mdb)};dbq="&Server.Mappath("dbname(路径全名)") 2、连接SQL Server数据库…

测试网速_使用Speedtest CLI测试你的网速

在本文中我们将使用一个名为speedtest-cli的命令行工具来测试网速。它是用Python语言编写的工具&#xff0c;系统通过向speedtest.net网站上传和下载数据来测试带宽。环境Centos7安装speedtest-cli工具在安装speedtest-cli之前&#xff0c;我们需要安装先安装python3-pip包管理…

回文数之一(大概)

若一个数&#xff08;首位不为0&#xff09;从左到右读与从右到左读都是一样&#xff0c;这个数就叫做回文数&#xff0c;例如12521就是一个回文数。 给定一个正整数&#xff0c;把它的每一个位上的数字倒过来排列组成一个新数&#xff0c;然后与原数相加&#xff0c;如果是回文…

C# IEnumerator IEnumerable接口

前言使用linq的时候大家应该都知道IEnumerable和IEnumerator接口&#xff01;解释一下IEnumerable 它利用 GetEnumerator() 返回 IEnumerator 集合访问器,声明实现该接口的class是“可枚举(enumerable)”的 通俗点说就是可进行迭代操作的类型。IEnumerator解释&#xff1a;它是…

linux中mpich的运行线程,贝叶斯法构建进化树:MrBayes

1. 简介使用贝叶斯法构建进化树的软件有很多。在这里简要介绍MrBayes的安装和使用。以下介绍是对几种贝叶斯法构建进化树软件的简介&#xff1a;MrBayes is a program for Bayesian inference and model choice across a wide range of phylogenetic and evolutionary models. …

linux c之gcc -g file.c -o file提示warning: no newline at end of file

1 问题 编译c文件的时候&#xff0c;命令如下 gcc -g file.c -o file 错误提示如下 warning: no newline at end of file 2 解决办法 原因&#xff1a;源文件的最后一行没有回车符造成 我们用vim编辑文件&#xff0c;然后到文件最后一行回车就行 vi和vim操作&#xff0…

php strtoupper 和 array_change_key_case 字符串转大写,小写

strtoupper &#xff1a;字符串转为大写。 array_change_key_case 则是把数组的所有的键转换为大写字母。 strtoupper&#xff1a; <?phpecho strtoupper("Hello world!"); 输出&#xff1a; HELLO WORLD! strtolower &#xff1a;字符串转为小写。 <?…

用Excel VBA连接SQL Server数据库并将表中的数据显示到Excel中

本实例使用VB语言和OLEDB类连接SQL Server 2005数据库。 在sheet1上右键→查看代码&#xff0c;加入如下代码&#xff1a; Sub admin()Dim conn, xRsSet conn CreateObject("ADODB.Connection")conn.Open "ProviderSQLOLEDB.1;Persist Security InfoFalse;Use…

filter与servlet对照

最近在开java物自&#xff0c;还记得刚开始使用servlet这是一个调试ajax什么时候&#xff0c;然后&#xff0c;我不知道怎么用&#xff0c;你知道写的路径来调用&#xff0c;总是提示404错&#xff0c;&#xff0c;到最后自己一点点的调通了&#xff0c;知道servlet是须要serve…

vc++ 提取网页上的文字_网页内容不让你复制?老师傅教的这招太绝了,1键提取全网文字...

在网上冲浪&#xff0c;看到了一些不错的文字&#xff0c;想要复制下来&#xff0c;可是网站就不让你复制&#xff0c;非要你注册登录账号&#xff0c;更有甚者要你购买VIP才能复制文字&#xff0c;这不是天方夜谭吗&#xff1f;今天老师傅就教你一招&#xff0c;学会了网页文字…

使用 C# 生成 EMF 矢量图形文件

前言公众号上有网友询问我如何生成 EMF 文件的问题&#xff1a;本以为非常简单&#xff0c;我快速给出了解决方案&#xff1a;var bitmap new Bitmap(640, 480);var g Graphics.FromImage(bitmap);g.DrawString("My IO", new Font(FontFamily.GenericSerif, 10), B…

php register_shutdown_function响应error 配合error_get_last 捕获错误

register_shutdown_function 函数,当我们的脚本执行完成或意外死掉导致PHP执行即将关闭时,我们的这个函数将会 被调用&#xff0c;可以配合 error_get_last 使用&#xff0c;代码如下&#xff0c;注释已经解释了代码了&#xff1a; error_get_last 稍后解释 <?php //a bo…

嵌入式开发linux工具,嵌入式Linux开发入门之MfgTool工具的使用

介绍嵌入式linux开发的环境搭建&#xff1a;一、PC端环境搭建2、Ubuntu装好后&#xff0c;在终端安装minicom工具&#xff0c;安装命令&#xff1a;sudo apt-get install minicom注&#xff1a;该工具在后面烧录开发板可以调试使用&#xff0c;对以后的嵌入式程序开发也是不可获…

SQL Server 2005 cmd工具的使用

您可以使用 sqlcmd 实用工具(Microsoft Win32 命令提示实用工具)来运行特殊的 Transact-SQL 语句和脚本。若要以交互方式使用 sqlcmd,或要生成可使用 sqlcmd 来运行的脚本文件,则需要了解 Transact-SQL。通常以下列方式使用 sqlcmd 实用工具: 在 sqlcmd 环境中,以交互的方…

剑指offer之按层打印树节点

1 问题 按层打印树节点&#xff0c;比如我们有树如下 23 5 1 4 2 3 这样打印&#xff1a;2 3 5 1 4 2 3 2 分析 队列&#xff1a;先进后出&#xff0c;这里我们先打印2&#xff0c;然后再打印3和5&#xff0c;我们这里可以使用队列&#xff0c;我们先把2入队…

基于key/value+Hadoop HDFS 设计的存储系统的shell命令接口

对于hadoop HDFS 中的全部命令进行解析&#xff08;当中操作流程是自己的想法有不允许见欢迎大家指正&#xff09; 接口名称 功能 操作流程 get 将文件拷贝到本地文件系统 。假设指定了多个源文件&#xff0c;本地目的端必须是一个文件夹。 &#xff08;1&#xff09;依照…

【足迹C++primer】52、,转换和继承虚函数

转换和继承,虚函数 Understanding conversions between base and derived classes is essential to understanding how object-oriented programming works in C. 理解基类和派生类之间的转换是不可缺少的 理解面向对象编程在。 Like built-in pointers, the smart pointer cla…