二叉树的递归遍历与复制

  1 #include <iostream>
  2  
  3 //定义树的数据结构
  4 struct BiTNode
  5 {
  6     int data;
  7     struct BiTNode *lchild, *rchild;
  8 };
  9  
 10 typedef struct BiTNode  BiTNode;
 11 typedef struct BiTNode* BiTree;
 12  
 13  
 14 //前序遍历
 15 void preOrder(BiTNode *root)
 16 {
 17     if (root == NULL)
 18     {
 19         return;
 20     }
 21     printf("%d ", root->data);
 22     preOrder(root->lchild);
 23     preOrder(root->rchild);
 24 }
 25  
 26 //中序遍历
 27 void inOrder(BiTNode *root)
 28 {
 29     if (root == NULL)
 30     {
 31         return;
 32     }
 33     inOrder(root->lchild);
 34     printf("%d ", root->data);
 35     inOrder(root->rchild);
 36 }
 37 //后序遍历
 38 void posOrder(BiTNode *root)
 39 {
 40     if (root == NULL)
 41     {
 42         return;
 43     }
 44     posOrder(root->lchild);
 45     posOrder(root->rchild);
 46     printf("%d ", root->data);
 47 }
 48 //创建拷贝函数
 49 BiTNode* CopyTree(BiTNode *root)
 50 {
 51     BiTNode *newNode = NULL;
 52     BiTNode *newLc = NULL;
 53     BiTNode *newRc = NULL;
 54  
 55     if (root == NULL)
 56     {
 57         return NULL;
 58     }
 59     //拷贝左子树
 60     if (root->lchild != NULL)
 61     {
 62         newLc = CopyTree(root->lchild);
 63     }
 64     else
 65     {
 66         newLc = NULL;
 67     }
 68  
 69     //拷贝右子树
 70     if (root->rchild != NULL)
 71     {
 72         newRc = CopyTree(root->rchild);
 73     }
 74     else
 75     {
 76         newRc = NULL;
 77     }
 78     
 79     //创建动态内存
 80     newNode = (BiTNode * )malloc(sizeof(BiTNode));
 81     if (newNode == NULL)
 82     {
 83         return NULL;
 84     }
 85  
 86     newNode->lchild = newLc;
 87     newNode->rchild = newRc;
 88     newNode->data = root->data;
 89  
 90     return newNode;
 91 }
 92  
 93  
 94  
 95 void main()
 96 {
 97     BiTNode t1, t2, t3, t4, t5;
 98     memset(&t1, 0, sizeof(BiTNode));
 99     memset(&t2, 0, sizeof(BiTNode));
100     memset(&t3, 0, sizeof(BiTNode));
101     memset(&t4, 0, sizeof(BiTNode));
102     memset(&t5, 0, sizeof(BiTNode));
103     t1.data = 1;
104     t2.data = 2;
105     t3.data = 3;
106     t4.data = 4;
107     t5.data = 5; 
108  
109     t1.lchild = &t2;
110     t1.rchild = &t3;
111     t2.lchild = &t4;
112     t2.rchild = &t5;
113     printf("Old Tree's preOrder:\n");
114     preOrder(&t1);
115     printf("\n");
116     printf("Old Tree's inOrder:\n");
117     inOrder(&t1);
118     printf("\n");
119     printf("Old Tree's posOrder:\n");
120     posOrder(&t1);
121     printf("\n");
122     printf("Old Tree:\n");
123     preOrder(&t1);
124     printf("\n");
125     BiTNode* newTree = CopyTree(&t1);
126     printf("New Tree:\n");
127     preOrder(newTree);
128  
129  
130     system("pause");
131 }

 

转载于:https://www.cnblogs.com/Lxk0825/p/9519983.html

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

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

相关文章

php超强后门在任意位置创建文件,php大马:.user.ini文件构成的超强PHP后门

这个估计很多同学看了不屑&#xff0c;认为是烂大街的东西了&#xff1a;那么我来个新的吧&#xff1a;。它比用的更广&#xff0c;不管是nginx/apache/IIS&#xff0c;只要是以fastcgi运行的php都可以用这个方法。我的nginx服务器全部是fpm/fastcgi&#xff0c;我的IIS php5.3…

CSS3-字体渐变色

示例&#xff1a;Maugers Blog <!DOCTYPE HTML> <html> <head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><title>Maugers Blog</title><style type"text/css…

Restlet框架– Hello World示例

Restlet是用于Java平台的轻量级&#xff0c;全面的开源REST框架。 Restlet适用于服务器和客户端Web应用程序。 它支持主要的Internet传输&#xff0c;数据格式和服务描述标准&#xff0c;例如HTTP和HTTPS&#xff0c;SMTP&#xff0c;XML&#xff0c;JSON&#xff0c;Atom和WAD…

BZOJ2809 dispatching 【可并堆】

题目分析&#xff1a; yy一下就知道了&#xff0c;合并用可并堆少个log。 代码&#xff1a; 1 #include<bits/stdc.h>2 using namespace std;3 4 const int maxn 102000;5 6 int n,m;7 int b[maxn],c[maxn],l[maxn],sz[maxn];8 long long tot[maxn];9 int dis[maxn],v…

php ci 框架 扩展缓存类,CodeIgniter扩展核心类实例详解

本文实例讲述了CodeIgniter扩展核心类的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;CI中对核心类、辅助类和函数的扩展是相当方便的&#xff0c;配置文件中指定了subclass_prefix扩展前缀&#xff0c;默认为MY_&#xff0c;扩展时需要以该配置为前缀&#xff…

jQuery下如何使用Json传递数据

json的结构为&#xff1a; {\"data\":[{\"key1\":\"1\"},{\"key2\":\"2\"},{\"key3\":\"3\"}]} 因为要进行输出&#xff0c;所以里边加了转义符&#xff0c;希望大家不要在此迷惑。下边&#xff0c;我就…

七牛云

待续....转载于:https://www.cnblogs.com/tovictory/p/8647883.html

Servlet 3的异步Servlet功能

在深入了解什么是异步Servlet之前&#xff0c;让我们尝试了解为什么需要它。 假设我们有一个Servlet&#xff0c;处理时间很长&#xff0c;如下所示。 LongRunningServlet.java package com.journaldev.servlet;import java.io.IOException; import java.io.PrintWriter;impo…

简单却实用的的例子:Jquery获取 radio 选中后的文字

今天在 QQ 群里有朋友问到 jQuery 怎么获取选中 radio 后的文本&#xff0c;可见要熟练的使用 jQuery 应该很好的掌握 jQuery 选择器&#xff0c;下边就让我们简单看看这个问题。 首先&#xff0c;他给出的 HTML 示例如下&#xff1a; <input type"radio" id"…

excel的宏与VBA入门——代码调试

直接介绍重点&#xff1a; 常用的操作是导航栏的逐句与断点&#xff1a; 添加断点&#xff1a;调试->切换断点 单步运行&#xff1a;调试->逐句 查看变量的窗口&#xff1a;视图->本地窗口 转载于:https://www.cnblogs.com/jiangbei/p/9561352.html

php访问服务器文件路径,PHP与服务器文件系统的简单交互

1、php.ini中关于文件上传的设置指令2、文件上传过程(1)上传文件提交表单html代码&#xff1a;Adminstration - upoload new filesUpload new filesUpload a file(2)php处理上传文件代码①在php脚本中&#xff0c;需要处理的数据保存在超级变量数组$_FILES中&#xff0c;开启re…

泽西岛客户:测试外部呼叫

吉姆和我在上周一直在做一些工作&#xff0c;其中涉及调用neo4j的HA状态URI来检查实例是否是主/从属&#xff0c;并且我们一直在使用jersey-client 。 该代码大致如下所示&#xff1a; class Neo4jInstance {private Client httpClient;private URI hostname;public Neo4jInst…

django F和Q 关键字使用

F 的使用&#xff1a; 想给表里每个价格加上一百就要用上F&#xff0c;直接加是不行的。 转载于:https://www.cnblogs.com/wuheng-123/p/9561422.html

php酷狗音乐json,用php来搜索酷狗音乐

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼返回结果要使用$datajson_decode($json,true);转换为php array变量搜索歌曲&#xff1a;http://mobilecdn.kugou.com/api/v3/search/song?formatjson&keyword想象之中&page1&pagesize30返回实例&#xff1a;Array([st…

了解OutOfMemoryError

每当您发现自己盯着一个带有OutOfMemoryError的堆栈跟踪时&#xff0c;它应该都非常清晰。 该程序不再有肘部空间&#xff0c;并且由于缺少它而濒临死亡。 从10,000英尺或高管椅子上可能已经包含太多信息。 但是&#xff0c;那些必须构建或维护应用程序并弄清为什么会产生特定错…

jQuery之合成事件

jQuery提供一些方法将两种效果合并到一起&#xff0c;比如&#xff1a;mouseover、mouseout。 下面是一些案例&#xff1a; hover(over,out)一个模仿悬停事件&#xff08;鼠标移动到一个对象上面及移出这个对象&#xff09;的方法。这是一个自定义的方法&#xff0c;它为频繁使…

基础命令_1

避免误删除数据1.尽量把文件移动到 /tmp目录2.参数最小化 -f -rf3.-f或-fr放在命令最后#########################################################################################################################find 命令 <find(选项)(参数)> find命令用来在…

php pdo使用事务,PHP内PDO事务使用步骤详解

这次给大家带来PHP内PDO事务使用步骤详解&#xff0c;PHP内PDO事务使用的注意事项有哪些&#xff0c;下面就是实战案例&#xff0c;一起来看一下。概要&#xff1a;将多条sql操作(增删改)作为一个操作单元&#xff0c;要么都成功&#xff0c;要么都失败。单条数据不用事务处理被…

[转帖]真TM长的:SQL Server 2008存储结构——GAM和SGAM、PFS结构、IAM结构、DCMBCM

谈到GAM和SGAM&#xff0c;我们不得不从数据库的页和区说起。 https://blog.csdn.net/snowfoxmonitor/article/details/49991015 一个数据库由用户定义的空间构成&#xff0c;这些空间用来永久存储用户对象&#xff0c;例如数据库管理信息、表和索引。这些空间被分配在一个或多…

六大Java功能

我花了无数小时来对不同的应用程序进行故障排除。 通过经验&#xff0c;我可以得出关于大多数开发人员应该远离的几个Java SE功能/ API的结论。 当我提到大多数开发人员时&#xff0c;我会想到常规的Java EE开发人员&#xff0c;而不是库设计人员/基础结构工程师。 全面披露&a…