首页 > 其他分享 >交换二叉树

交换二叉树

时间:2023-06-21 23:01:06浏览次数:43  
标签:lchild 遍历 BiTree 交换 二叉树 printf rchild

#include  <stdio.h>
#include  <stdlib.h>
#include <malloc.h>

typedef  struct  BTNode {
	char  data  ;
	struct  BTNode  *lchild;
	struct  BTNode  *rchild  ;
} *BiTree;

void  createBiTree(BiTree  *t) {
//此处补充代码,输入二叉树的先序遍历序列建立二叉树
	char s;
	BiTree q;
	s = getchar();
	getchar();
	if (s == '#') {
		*t = NULL;
		return ;
	}
	q = (BiTree)malloc(sizeof(struct BTNode));
	q->data = s;
	*t = q;
	createBiTree(&q->lchild);
	createBiTree(&q->rchild);

}

//此处补充代码,定义函数,交换二叉树结点的左右孩子
void swapChildren(BiTree p) {
	if (p) {
		BiTree temp = p->lchild;
		p->lchild = p->rchild;
		p->rchild = temp;
		swapChildren(p->lchild);
		swapChildren(p->rchild);
	}
}



void  PreOrder(BiTree  p) {
	//此处补充代码完成二叉树的先序遍历
	if (p) {
		printf("%c", p->data);
		PreOrder(p->lchild);
		PreOrder(p->rchild);
	}

}

void  InOrder(BiTree  p) {
//此处补充代码完成二叉树的中序遍历
	if (p) {
		InOrder(p->lchild);
		printf("%c", p->data);
		InOrder(p->rchild);
	}

}

void  PostOrder(BiTree  p) {
//此处补充代码完成二叉树的后序遍历
	if (p) {
		PostOrder(p->lchild);
		PostOrder(p->rchild);
		printf("%c", p->data);
	}


}

int  main() {
	//此处补充代码,调用函数完成原二叉树的三种遍历序列及交换左右孩子后的三种遍历序列
	BiTree t = NULL;
	createBiTree(&t);

	printf("preorder:");
	PreOrder(t);
	printf("\n");
	printf("inorder:");
	InOrder(t);
	printf("\n");
	printf("postorder:");
	PostOrder(t);
	printf("\n");
	printf("After swap:");
	swapChildren(t);
	printf("\n");
	printf("preorder:");
	PreOrder(t);
	printf("\n");
	printf("inorder:");
	InOrder(t);
	printf("\n");
	printf("postorder:");
	PostOrder(t);
	printf("\n");

	return  0;
}

标签:lchild,遍历,BiTree,交换,二叉树,printf,rchild
From: https://blog.51cto.com/u_16030624/6532473

相关文章

  • 20230314 3.2. 二叉树
    二叉树的定义二叉树T:一个有穷的结点集合。这个集合可以为空若不为空,则它是由根结点和称为其左子树TL和右子树TR的两个不相交的二叉树组成。二叉树具体五种基本形态:空二叉树;只有根结点的二叉树;只有根结点和左子树TL的二叉树;只有根结点和右子树TR的二叉树;具有根结点、左......
  • 古董交换机欣赏
    前几天我在机房里转悠,发现一个有意思的交换机是intel因特尔,看起来是个老古董。 上面这张图,有个按钮,mdi和mdi-x切换的,因为最早的交换机的网口网线是区分直通线和全反线的     最最有意思的地方在这张图,这是console口的原型,console本质上是EIA232接口,它还贴心的给出了配置9......
  • 两个以上vlan三台以上交换机配置好,网络不通,引发的思考
    我在配置access和trunk后,同一个vlan内网络不通,不同vlan也不能访问  如果要让同一个vlan访问,那么在接入交换机间的交换机也要配置相同vlan如果要让不同vlan访问,要配置svi如果svi配置在同一个交换机上,那么终端的设备网关也要配置到这里,svi到终端之间的交换机也要配置相同vlan如果s......
  • 思科交换机端口镜像
    SPAN:本地设备端口监控,当所有被监听的源端口与目的端口同处于一台交换机上,SPAN会话被称为本地SPAN。Switch(config)#monitorsession1sourceinterfacefastEthernet0/0tx//后面参数tx意思是监控0/0接口发送的流量,默认为both,即监控收发的流量Switch(config)#monitorsession......
  • 代码随想录算法训练营第十三天| 层序遍历 226.翻转二叉树 (优先掌握递归) 101. 对
    层序遍历注意:1,使用队列的形式,依次入队,同时对队列进行计数2,知道数目消失,才进行下一个队列代码:1vector<vector<int>>levelOrder(TreeNode*root)2{3vector<vector<int>>result;4if(root==NULL)returnresult;5queue<TreeNode*>selected;6......
  • 死信队列 - 死信交换机绑定配置【RabbitMQ】
    一、逻辑图二、死信交换机绑定配置1packagecn.itcast.mq.config;23importorg.springframework.amqp.core.*;4importorg.springframework.context.annotation.Bean;5importorg.springframework.context.annotation.Configuration;67importjava.util.H......
  • 数据结构和算法系列课程(01)--- 排序二叉树和红黑树
    把排序二叉树放在这个系列课程的第一个部分似乎有些唐突,但是考虑到它在面试中出现的可能性,把它放在这样的一个位置也就不足为奇了。关于树和二叉树的基础知识,可以到下面的链接中下载我的课件进行了解。下面给出一个排序二叉树的Java实现:packagcom.loonstudio;/***排序二叉树......
  • 锐捷交换机多链路 限速
    应用场景:Qospoliy-map可以关联访问控制列表ACL,实现基于特定报文流的限速(比如只针对网页的http的流量进行限速,或者是只针对XX网段的用户限速等),利用ACL可灵活配置的特点,可以满足客户对不同流量的定制化限速,当然这种方式的配置会相对复杂点,当客户有如上需求的时候可以考虑采用poli......
  • 华三交换机配置IRF堆叠
    一、IRF的概述IRF(IntelligentResilientFramework,智能弹性架构)是H3C自主研发的软件虚拟化的技术。它的核心思路是将多太设备通过IRF物理端口连接在一起,进行必要的配置后,虚拟化成一台“分布式设备”。理解为堆叠有助于我们更快的理解。堆叠是指将一台以上的交换机组合起来共同工......
  • H3C交换机DHCP+安全配置
    1配置需求及实现的效果将防火墙部署在互联网出口,使用固定IP地址线路接入互联网。运营商提供的IP地址为198.76.28.30/30,网关为198.76.28.29,DNS地址为114.114.114.114。初步规划防火墙使用3接口接入运营商,使用4接口连接内部网络,内部网络使用192.168.10.0网段,要求内网终端可以自动......