数据结构——交换左右子树

算法设计之二叉树的遍历 最近发现面试很喜欢考二叉树的遍历,所以补一个。 树的节点结构: public class TreeNode{ public int value; public TreeNode left; public TreeNode right; public TreeNode(int data){ this.data = data; } } 一... 阅读详情

递归——层次遍历—交换左右子树算法

思路:
与先序递归遍历类似
1如果有子树,交换这个节点的左右子树(和交换两个变量的值一样)
2再递归这个节点的左子树,右子树;

#include<stdio.h>
#include<bits/stdc++.h> 
typedef char TElemType;
typedef int status; 
typedef struct BiNode
{
	TElemType data;
	struct BiNode *lchild;
	struct BiNode *rchild;
}BiNode,*BiTree;
void CreateBiTree(BiTree &T)//¶þ²æÊ÷µÄÏÈÐò´´½¨ 
{
	TElemType ch;
	scanf("%c",&ch);
	if(ch=='#')
		T=NULL;
	else 
	{
		T=(BiNode*)malloc(sizeof(BiNode));
		if(!T)
			exit(-1);
		T->data=ch;
		CreateBiTree(T->lchild);
		CreateBiTree(T->rchild);
	}
}

void Exchange_lchild_rchild(BiTree &T)//½»»»×óÓÒº¢×Ó½áµã 
{
	if(T!=NULL)	
	if(T->lchild!=NULL||T->rchild!=NULL)
		{
			BiTree temp;
			temp=T->lchild;
			T->lchild=T->rchild;
			T->rchild=temp;
	Exchange_lchild_rchild(T->lchild);
	Exchange_lchild_rchild(T->rchild);
		}
	
 }
 int BiTree_height1(BiTree T)//ÇóÊ÷µÄÉî¶ÈËã·¨1 
{
	if(T==NULL)
		return 0;
	else
	{
		if(BiTree_height1(T->lchild)>BiTree_height1(T->rchild))
				return 1+BiTree_height1(T->lchild);
		else
				return 1+BiTree_height1(T->rchild);
	
	}
	
	
} 
void printNodeAtLevel(BiTree T,int level)  
{  
    if(T==NULL||level<0)  
        return;  
  
    if(level==0)  
    {  
    printf("%c ",T->data);
	return;  
    }  
  
    // ×ó×ÓÊ÷µÄ level - 1 ¼¶  
    printNodeAtLevel(T->lchild,level-1);  
  
    // ÓÒ×ÓÊ÷µÄ level - 1 ¼¶  
    printNodeAtLevel(T->rchild,level-1);  
}
 
void levelOrder(const BiTree T)
{
	if(T==NULL)
		return;
	int totalLevel = BiTree_height1(T);
	for(int i = 0; i< totalLevel; i++)
	{
		printNodeAtLevel(T, i);
		printf("\n");//´òÓ¡ÍêÒ»²ã£¬»»ÐÐ
	}
} 
 int main()
 {
 	BiTree T;
	printf("´´½¨Ê÷ÊäÈëÊ÷TµÄÏÈÐòÐòÁÐ(ÆäÖÐʹÓÃ#´ú±í¿Õ½Úµã)\n");
	CreateBiTree(T);
	levelOrder(T);
	
	printf("½»»»Ê÷×óÓÒ×ÓÊ÷Ëã·¨\n");
	Exchange_lchild_rchild(T);
	
	 levelOrder(T);
	
	
  } 

交换树的左右子树 构建一棵树,交换每个节点的左右子树 阅读详情

相关推荐

c++ 数据结构——二叉树的构建及其应用,实现左右子树交换并输出前序递归结果

数据结构实习——二叉树及其应用 一、实习题目及要求 1、题目: 二叉树基本算法的实现 2、功能要求: (1)键盘输入二叉树结点前序序列,创建一棵二叉树; (2)实现SwapTree方法,以根结点为参数,交换每个结点的左子树和右子树(提示:前序递归); (3)实现Find方法,查找值为key的结点,并输出该结点的所有祖先结点。 3、创建要求: (1)要求键盘输入二叉树前序序列(程序5.12) (2...

Arana的博客 3595

二叉树双序遍历

所谓二叉树的双序遍历就是,对于二叉树的每个节点来说,先访问该节点,再按照这种方式访问左子树,再访问该节点,再按照双序遍历访问右子树。 该方法其实是对前序遍历进行了改变,多增加了一次访问节点函数的调用。 代码如下: #include <iostream> using namespace std; typedef struct BTNode { char data; BTNode *l_child; BTNode *r_child; } BTNode; void Dou

qq_42169456的博客 4052

经典面试题:给两个序列如何构造一棵二叉树

微信搜一搜:bigsai 大家都在关注的刷题、学习数据结构和算法宝藏项目 关注回复进群即可加入力扣打卡群,欢迎划水。近期打卡: LeetCode 98验证二叉搜素树(中序遍历)&99恢复二叉搜索树 LeetCode 100相同的树&101对称二叉树 LeetCode 102二叉树的层序遍历&103二叉树锯齿形遍历&104二叉树的最大深度 前言 在面试的过程中,我们经常会遇到一些数据结构相关的问题,很多经典问题百问不烂。而数据结构的问题中排序、链表、二叉树等问题又是经久不衰.

bigsai 4462

双序遍历建立二叉树

先序和中序,后序和中序以及层次和中序建立二叉树。

青耕_的博客 2330

别再被骚扰了!手把手教你彻底卸载阿里云盾(安骑士)并封禁其IP段

本文详细指导如何彻底卸载阿里云盾(安骑士)并封禁其IP段,帮助用户夺回服务器控制权。从识别监控组件到执行官方卸载脚本,再到手动清理残留文件和配置iptables规则,确保完全阻断云盾通信。适用于追求极致性能或需要完全自主控制的环境。

weixin_42525551的博客 454

TongWeb微服务部署实战:Nacos注册与网关路由的疑难解析

本文分享了将Spring Cloud微服务迁移至TongWeb应用服务器时,解决Nacos服务注册失败与Spring Cloud Gateway路由失效的实战经验。针对Nacos注册问题,通过实现ApplicationRunner接口并利用JMX获取容器端口,实现了手动注册;针对网关路由问题,建议将基于WebFlux的Gateway模块改为JAR包独立部署,以保障其原生运行环境。文章为在TongWeb上进行微服务部署提供了关键的问题排查思路与混合架构部署的最佳实践。

weixin_29209801的博客 240

【数据结构·考研】交换二叉树的左右子树

交换二叉树的左右子树 采用递归算法实现,想要交换 t 的左右子树,首先交换 t 的左子树的左右子树,再交换 t 的右子树的左右子树,最后交换 t 的左右子树,结点为空是边界条件。总的运行情况就是先遍历到树的边缘,然后从下往上交换,直至整棵树的左右子树都被交换。 void swap(Tree& t){ if(t == NULL) return; //空结点返回上一层 swap(t->left); //实现左子树的交换 swap(t->right); //实现右子树的交换

Jiawen9的博客 5890

基于LSTM语义分析的企业风险预测系统

在数字化时代,企业面临着前所未有的挑战和机遇,而风险管理作为确保企业稳定发展的关键一环,其重要性日益凸显。为了及时、准确地监测和分析企业相关的风险,并预测可能带来的风险,本文介绍了一种基于长短期记忆(LSTM)语义分析的企业风险预测系统。该系统利用深度学习技术,通过将收集到的企业数据进行预处理和分析,结合LSTM模型对文本进行深度语义分析,从而实现对潜在风险的预测和评估。系统设计方面,该系统包括数据预处理、LSTM模型构建与训练、风险预测以及可视化展示等模块。

qiufangtaowvnyyidtf的博客 1393

数据结构——二叉树交换左右子树位置(C语言)

交换二叉树的左右子树 #include<stdio.h> #include<stdlib.h> #include<queue> #include <iostream> #define MAXSIZE 10010 #define ElemType int using namespace std; typedef struct BTNode{ ElemType data; BTNode *lchild,*rchild; }*BTree; /.

weixin_42468092的博客 4513

Palabos User Guide中文解读 | 第五章 | Palabos编程 (跳过了第四章Palabos-Java接口)

作者的话:本人在学习palabos时,发现国内中文资料甚少,恰好网上可以直接搜到palabos user guide这种英文资料,加之时间充裕,便打算开始翻译,翻了一节后发现这可能算侵权,就比较伤脑筋,突然想到自己写中文解读即可,便有了下面的博客。 Palabos User Guide Release 1.0 r1 Copyright © 2019 University of Geneva Jul...

Yulan Fang's notes. 2298

ADS新手必看:ICCAP数据导入与导出CSV的完整流程(附常见问题解决)

本文为ADS新手详细讲解了如何将ICCAP测试数据导入ADS进行仿真分析,并导出为通用CSV格式的完整流程。内容涵盖文件格式解析、导入设置、数据验证、处理技巧及常见问题排查,重点解决了数据文件导入过程中的兼容性与单位映射等核心难点,帮助射频工程师高效连接测量与仿真环节。

peace的博客 558

#数据结构 交换二叉树所有结点的左右子树

qq_42368203的博客 1401

【23】OpenCV C++实战篇——张正友相机标定【相机标定原理、相机标定流程、标定结果评价、图像畸变矫正】

R是3×3的正交单位矩阵(即旋转矩阵),t为平移向量,R、t与摄像机无关,所以称这两个参数为摄像机的外参数(extrinsicparameter),可以理解为两个坐标原点之间的距离,因其受x,y,z三个方向上的分量共同控制,所以其具有三个自由度。R是3×3的正交单位矩阵(即旋转矩阵),t为平移向量,R、t与摄像机无关,所以称这两个参数为摄像机的外参数(extrinsicparameter),可以理解为两个坐标原点之间的距离,因其受x,y,z三个方向上的分量共同控制,所以其具有三个自由度。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 4479

西电数据结构上机题——交换左右子树

递归思路比较简单 算法暴力,不断迭代 一句话说清算法思想:只要没有后代,往下交换就完事了 //交换左右子树的程序代码 #include<stdio.h> #include<malloc.h> //二叉链表的结构类型定义 const int maxsize=1024; typedef char datatype; typedef struct node { datatype data; struct node *lchild,*rchild; }bitree; bitree*cr

兴趣使然的创作者 1382

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

数据结构篇:二叉树(四:交换左右子树)

应用递归思想 如果结点不为空,就交换其左右子树,而待交换的左右子树,我们不需要关心是否为空。 void Tree::ExChangeTree(BiTree *T) { BiTree *temp = new BiTree; if (T) { temp = T-&gt;rchild; T-&gt;rchild = T-&gt;lchild...

设计师养成记 2万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

数据结构之---交换左右子树

递归实现,直接放代码,有兴趣的可以看我后面的详细解析! //将树B的所有节点的左,右子树进行交换 void Swap(BiTree &T){ BiTree temp; if(T){ Swap(T->lchild); Swap(T->rchild); temp=T->lchild; T->lchild=T->rchild; T->r...

weixin_44462351的博客 4665

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

数据结构实验2-1 交换二叉树左右子树

<!-- /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-q

1397

C语言 -- 数据结构 --- 将二叉树的左右子树交换

C语言 – 数据结构 — 将二叉树的左右子树交换 #include<stdio.h> #include<stdlib.h> typedef struct Tree { int data; struct Tree *lchild; struct Tree *rchild; }Tree, *BitTree; BitTree CreateLink() { int data; BitTree T; scanf("%d", &data

xufengniannb的博客 1519

数据结构——交换二叉树中所有结点的左右子树(所有结点换位置)

采用递归的思想,先思考对单个结点要进行的操作:现有本层结点T,函数的目的在于将T-&gt;lchild连到原本的右子上,把T-&gt;rchild连接到原本的左子上,因此语句结构应为:T-&gt;lchild=fun();T-&gt;rchild=fun();进一步写为:T-&gt;lchild=swap(T-&gt;rchild);T-&gt;rchild=swap(T-&gt;lchild);...

Taiking8848的博客 8806

数据结构复习(交换左右子树)

编写递归算法,将二叉树中所有结点的 左、右子树相互交换。 要求实现下列函数: void Exchange(BiTree &bt); /* Exchange the left and right leaves of */ /* bitree whose root node is bt          */ 二叉链表类型定义: typedef struct BiTNode {

hixiaowen的专栏 1508

数据结构 | 二叉树交换左右子树

二叉树交换子树

不问过去,无论将来 1394

数据结构与算法之交换二叉树左右子树

# 题目 ![image](assets/image-20220913103238-m8nudwk.png) # 思想 递归交换即可,前/中/后序皆可 # 代码实现 ## 简洁版 ```java public TreeNode swapLeftAndRightNode(TreeNode root) { if(root!=null){ swapLeftAndRightNode(root.left); swapLeftAndRightNode(root.rig

five-five 388

数据结构(C++)二叉树结点数、叶子节点数、高度、交换左右子树相关代码实现

二叉树不管是求点数、叶子节点数、高度,或者交换左右子树,都离不开递归的思想,由于是左右子树,所以递归在二叉树中有着非常好的应用。 结点数 如果结点为空,则非有效结点,直接return。如果不是空,则+1的基础上,计算由此结点开始的左右子树的结点数,最后返回。 int Count(BiNode* root) { int number = 0; if (root == NULL) nu...

qq_43656233的博客 2393

【数据结构—树】交换左右子树

【代码】【数据结构—树】交换左右子树。

m0_54188395的博客 439
上一篇: 数据结构——二叉树的层次遍历
下一篇: 数据结构——二叉树的双序遍历
943802606
博客等级 码龄6年 1万+粉丝 177原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值