百练+二叉树操作+直接找到父节点,然后交换左右儿子,递归
点击打开链接
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<string.h>
#include<cstring>
#include<string>
#include<algorithm>
#include<math.h>
#include<queue>
#include<set>
#include<stack>
#include<map>
#define LL long long
#define inf 0x3f3f3f3f
using namespace std;
int t=0,n=0,m=0,X=0,Y=0,Z=0;
int tree[450][2],flag1,flag2;
void prin(int x)
{if(tree[x][0]==-1){printf("%d\n",x);return;}prin(tree[x][0]);
}
void solv(int p,int a,int b)
{if(p==-1) return;if(tree[p][0]==a){///左边节点flag1=p*2+0;}if(tree[p][1]==a){///右边节点flag1=p*2+1;}if(tree[p][0]==b){///左边节点flag2=p*2+0;}if(tree[p][1]==b){///右边节点flag2=p*2+1;}solv(tree[p][0],a,b);solv(tree[p][1],a,b);
}
int main()
{scanf("%d",&t);while(t--){scanf("%d %d",&n,&m);for(int i=0;i<n;i++){scanf("%d %d %d",&X,&Y,&Z);tree[X][0]=Y;tree[X][1]=Z;}for(int i=0;i<m;i++){int x=0,y=0,type=0;scanf("%d",&type);if(type==1){scanf("%d %d",&x,&y);flag1=0; flag2=0;solv(0,x,y);swap(tree[flag1/2][flag1%2],tree[flag2/2][flag2%2]);///升级到父亲节点,交换左右儿子}else if(type==2){scanf("%d",&x);prin(x);}}}return 0;
}
百练+二叉树操作+直接找到父节点,然后交换左右儿子,递归相关推荐
- [CareerCup] 4.7 Lowest Common Ancestor of a Binary Search Tree 二叉树的最小共同父节点
4.7 Design an algorithm and write code to find the first common ancestor of two nodes in a binary tr ...
- 算法练习day10——190328(二叉树的先序、 中序、 后序遍历, 包括递归方式和非递归方式、找到一个节点的后继节点、二叉树的序列化和反序列化)
1.实现二叉树的先序. 中序. 后序遍历, 包括递归方式和非递归方式 1.1 访问节点的顺序 节点访问顺序如下图所示: 访问顺序:1 2 4 4 4 2 5 5 5 2 1 3 6 6 6 3 7 7 ...
- XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 查找校验xml文件中相同的节点属性值 java遍历文件夹解析XML
XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 以及查找xml文件中相同的节点属性值 项目背景:这是本人实习中所碰到的项目,当时感觉很棘手, ...
- MFC动态建立二叉树、序列检错以及获取父节点
根据前序+中序或中序+后序在MFC中实现动态建立二叉树. 文章目录 根据前序+中序或中序+后序在MFC中实现动态建立二叉树. 前言 一.动态建立二叉树 1.题目要求 2.具体实现 1.对话框布局 2. ...
- 程序员面试100题之十六:二叉树中两个节点的最近公共父节点
这个问题可以分为三种情况来考虑: 情况一:root未知,但是每个节点都有parent指针 此时可以分别从两个节点开始,沿着parent指针走向根节点,得到两个链表,然后求两个链表的第一个公共节点,这个 ...
- 左神算法基础班4_4_3在二叉树中找到一个节点的后继节点
Problem: 在二叉树中找到一个节点的后继节点 [题目] 现在有一种新的二叉树节点类型如下: public class Node { public int value; public Node l ...
- LeetCode 742. 二叉树最近的叶节点(建立父节点信息+BFS)
文章目录 1. 题目 2. 解题 1. 题目 给定一个 每个结点的值互不相同 的二叉树,和一个目标值 k,找出树中与目标值 k 最近的叶结点. 这里,与叶结点 最近 表示在二叉树中到达该叶节点需要行进 ...
- 程序员面试100题之十六:二叉树中两个节点的最近公共父节点(最低的二叉树共同祖先)
这个问题可以分为三种情况来考虑: 情况一:root未知,但是每个节点都有parent指针 此时可以分别从两个节点开始,沿着parent指针走向根节点,得到两个链表,然后求两个链表的第一个公共节点,这个 ...
- 带父节点的平衡二叉树_深入理解(二叉树、平衡二叉树、B-Tree、B+Tree )的区别
一.背景 一般说MySQL的索引,都清楚其索引主要以B+树为主,此外还有Hash.RTree.FullText.本文简要说明一下MySQL的B+Tree索引,以及和其相关的二叉树.平衡二叉树.B-Tr ...
最新文章
- HiCar基本功能介绍
- MOS管体二极管的作用
- 第5章 图像分类的数据集
- LeetCode 1114. Print in Order--Java解法--并发问题
- HDOJ 3255 Farming(扫描线 + 线段树 体积的并)
- JAVA学习之常用集合List,Set,Map
- MVC 顶层设计-HandlerMapping
- java Socket实现简单在线聊天(二)
- Java当中的异常处理
- ActiveMQ学习总结(7)——ActiveMQ使用场景
- 巧用DBGrid控件的Sort属性实现“点击标题栏自动排序功能”。(改进版本)
- 年前的面试经历(二)
- 【三维路径规划】基于matlab遗传算法无人机三维路径规划【含Matlab源码 1268期】
- jdk动态代理为什么只能为接口生成代理类?
- SpringBoot 2.X 整合 J2cache 一级缓存 ehcache3 二级缓存 redis (含使用demo实例)
- VUE 组件 有数据不渲染 v-for
- 关于windows版本电脑版微信更新后无法显示好友头像以及接收图片和表情的解决方案
- 论文笔记:Delving into Data: Effectively Substitute Training for Black-box Attack
- 对乔布斯逝世的47个评价
- 网约车2.0时代,首汽约车让AI实时“听懂”打车服务