交换二叉树的每个节点的左右子树
题目:试编写一个算法将一颗二叉树的所有节点的左右子树进行交换。
分析:
我们仍然可以采用递归的方式进行交换。
代码如下:
struct biTree {char data;struct biTree *lchild;struct biTree *rchild;
};
#include <stdio.h>
#include <stdlib.h>
void swapTree(biTree *T) {//其本质就是从叶子节点开始进行交换,一路推进到根节点struct biTree *p = T,*t;if (!p) return;if (!p->lchild&&!p->rchild) {//如果没有左右孩子,就不需要交换了,直接返回return;}else {swapTree(p->lchild);//交换左子树swapTree(p->rchild);//交换右子树t = p->lchild;p->lchild = p->rchild;p->rchild = t;}
}
int main() {int num;struct biTree *T = (struct biTree*)malloc(sizeof(struct biTree));biTree *create(biTree *);void inOrder(biTree *);T = create(T);//创建一颗二叉树inOrder(T);printf("\n");swapTree(T);inOrder(T);return 0;
}
舞台再大,你不上台,永远是个观众。平台再好,你不参与,永远是局外人。能力再大,你不行动,只能看别人成功!没有人会关心你付出过多少努力,撑得累不累,摔得痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷。
交换二叉树的每个节点的左右子树相关推荐
- 交换二叉树中所有结点的左右子树的位置
#include<stdlib.h> #include<stdio.h> #include<stack> #define N 50 using namespace ...
- 设计一个镜面影射算法,将一个二叉树的每个节点的左,右子结点交换位置
#define OK 1 #define ERROR 0 #include<stdio.h> #include<stdlib.h> typedef char TElemType ...
- 数据结构:(翻转二叉树) 若二叉树采用二叉链表作存储结构,要交换其所有分支结点的左右子树的位置,采用()遍历方法最合适
题目 若二叉树采用二叉链表作存储结构,要交换其所有分支结点的左右子树的位置,采用()遍历方法最合适?(北京航空航天大学1999,北京工业大学2016) A. 前序 B. 中序 C. 后序 D. 层次 ...
- 查找树的指定层级_非递归层次遍历方法实现二叉树中指定节点的层次数查找
数据结构教材中,提供了基于队列实现一个二叉树的非递归层次遍历算法.但对于一个任意二叉树,如果要查找其中任何一个节点所在的层次数,教科书中并没有给出基于层次遍历的非递归算法.鉴于层次遍历算法比较容易理解 ...
- 剑指Offer之寻找二叉树下一个节点
寻找二叉树下一个节点 1.题目描述 2.题目理解 1.题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. ...
- 二叉树:叶节点的一些操作
目录 1.求叶子节点之和 2.求叶子节点的父节点之和 3.求左叶子节点 leetcode404 4.层数最深叶子节点之和leetcode1302 5.层数最浅叶子节点之和 6.删除给定值的叶子节点le ...
- 二叉树任意两节点之间的最短距离
public class 二叉树任意两节点之间的路径 {public static void main(String[] args) {TreeNode node = new TreeNode(1); ...
- 二叉树的堂兄弟节点判断001
1.描述 993在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处. 如果二叉树的两个节点深度相同,但父节点不同,则它们是一对堂兄弟节点. 我们给出了具有唯一值的二 ...
- 993. 二叉树的堂兄弟节点
在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处. 如果二叉树的两个节点深度相同,但父节点不同,则它们是一对堂兄弟节点. 我们给出了具有唯一值的二叉树的根节点 r ...
最新文章
- R语言-向量自回归模型VAR的实现
- 2、ES5的严格模式use strict
- Linux监控工具Spotlight on Unix
- 数商云DMS经销商管理系统解决方案:DMS系统实现业务全渠道、销售数据采集
- Cmake入门(1)cmake安装,创建第一个工程,引入头文件
- 《杂记》- 之- 使用windows终端命令查看文件的MD5
- NBU备份Vmware
- 官网和网盘,VS2015安装详细教程(带图解+下载地址+超详细)
- 微信小程序登录,后端如何处理?
- java cobar_Cobar源码解析(二)
- [转]用python来开发webgame服务端(3)
- 从我的历程谈谈该如何学习
- thinkphp5.0漏洞修复
- 传递给printf的额外参数
- nRF52832 GATT 自定义Service/Characteristic
- [BZOJ3240][Noi2013]矩阵游戏 快速幂
- debian apache2不执行php,Debian下Apache2的安装与配置
- 为什么工资高的程序员很少炫富?
- ACM里的期望和概率问题 从入门到精(入)通(土)
- 用jk触发器构成二分频电路_JK触发器地应用设计.ppt