leetcode971. 翻转二叉树以匹配先序遍历(dfs)
给定一个有 N 个节点的二叉树,每个节点都有一个不同于其他节点且处于 {1, …, N} 中的值。
通过交换节点的左子节点和右子节点,可以翻转该二叉树中的节点。
考虑从根节点开始的先序遍历报告的 N 值序列。将这一 N 值序列称为树的行程。
(回想一下,节点的先序遍历意味着我们报告当前节点的值,然后先序遍历左子节点,再先序遍历右子节点。)
我们的目标是翻转最少的树中节点,以便树的行程与给定的行程 voyage 相匹配。
如果可以,则返回翻转的所有节点的值的列表。你可以按任何顺序返回答案。
如果不能,则返回列表 [-1]。
代码
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val = x; }* }*/
class Solution {int pos=0;List<Integer> r=new ArrayList<>();public List<Integer> flipMatchVoyage(TreeNode root, int[] voyage) {flip(root,voyage);return r;}public void flip(TreeNode root,int[] voyage) {if(root==null||r.size()>0&&r.get(0)==-1) return;//如果出现了不满足的情况或者节点为空直接返回if(root.val!=voyage[pos])//交换完还是不符合则返回-1{r.clear();r.add(-1);return ;}if(root.left!=null&&root.left.val!=voyage[pos+1])//如果不符合则交换左右子树{TreeNode temp=root.left;root.left=root.right;root.right=temp;r.add(root.val);//将需要交换子树的节点入队}pos++;flip(root.left,voyage);flip(root.right,voyage);}
}
leetcode971. 翻转二叉树以匹配先序遍历(dfs)相关推荐
- leetcode971. 翻转二叉树以匹配先序遍历
leetcode971. 翻转二叉树以匹配先序遍历 这道题的说明还没有题目清晰,所以不粘题内容了. 思路 前序遍历,遇到当前节点和对应的voyage值不相等的时候,返回false. 并且看当前节点的左 ...
- LeetCode 971. 翻转二叉树以匹配先序遍历(DFS)
1. 题目 给定一个有 N 个节点的二叉树,每个节点都有一个不同于其他节点且处于 {1, -, N} 中的值. 通过交换节点的左子节点和右子节点,可以翻转该二叉树中的节点. 考虑从根节点开始的先序遍历 ...
- 971. 翻转二叉树以匹配先序遍历
给定一个有 N 个节点的二叉树,每个节点都有一个不同于其他节点且处于 {1, ..., N} 中的值. 通过交换节点的左子节点和右子节点,可以翻转该二叉树中的节点. 考虑从根节点开始的先序遍历报告的 ...
- 【leetcode 971】 翻转二叉树以匹配先序遍历
题意: 给定一个先序遍历序列,给出一棵树,问能否通过翻转改树的某些左右子节点,使得该树的先序遍历序列等于给定的先序遍历序列 思路: 很基础的题目了,就是先序遍历一下,如果在这个节点的左子节点的值不等于 ...
- 二叉树非递归先序遍历
二叉树的递归先序遍历很简单,假设二叉树的结点定义如下: 1 struct BinaryTreeNode 2 { 3 int m_nValue; 4 BinaryTreeNode* m_pLeft; 5 ...
- 二叉树建立及中序遍历C++语言实现
二叉树建立及中序遍历C++语言实现: #include<stdio.h> #include<stdlib.h> typedef struct node{//二叉树结点数据结构定 ...
- 栈的亚特兰数与二叉树的前序中序遍历序列
栈的亚特兰数与二叉树的前序中序遍历 @(算法学习) 已经熟知的是二叉树的中序遍历和先序遍历可以唯一确定一棵树. 更有趣的知识点是,以先序遍历序列作为入栈序列,那么出栈序列恰为中序遍历.这样就把两种遍历 ...
- 二叉树前中后序遍历的非递归实现以及层次遍历、zig-zag型遍历详解
前言 二叉树的遍历是一个比较常见的问题,递归实现二叉树的前中后序遍历比较简单,但非递归实现二叉树的前中后序遍历相对有难度.这篇博客将详述如何使用非递归的方式实现二叉树的前中后序遍历,在进行理论描述的同 ...
- 二叉树,二叉树的归先序遍历,中序遍历,后序遍历,递归和非递归实现
二叉树,二叉树的归先序遍历,中序遍历,后序遍历,递归和非递归实现 提示:今天开始,系列二叉树的重磅基础知识和大厂高频面试题就要出炉了,咱们慢慢捋清楚! 文章目录 二叉树,二叉树的归先序遍历,中序遍历, ...
最新文章
- const 是个类型修饰符号。
- iconfont svg图标不能更改颜色的解决方法
- 一分钟先生之拨云见日看绩效
- XBodhi(技术框架)——序
- 云炬随笔20171202
- python数据分析可视化实例_Python数据分析及可视化实例之基于Kmean分析RFM进行用户关怀...
- 23V3有这种C语言表达式吗,数据结构(C语言版第2版_李云清)习题答案2012-12.doc
- 【渝粤题库】陕西师范大学202081 管理学 作业 (专升本、高起本、高起专)
- linux redis 主从配置,redis集群(主从配置)
- Power BI Desktop中的“提问”功能
- win10ltsc安装后重启提示bitlocker有问题怎么办_重装系统过程中电脑意外重启?这几步彻底摆脱安装失败的尴尬!...
- python 中的 Fraction 模块
- 0基础自学鸿蒙-Day_002 HelloWorld
- 迅捷路由器造成计算机无法上网,迅捷路由器不能上网怎么办
- DSPE-PEG4-Mal分子式:C56H103N2O15P的分子量介绍
- OI游记——一个不配称为OIer的失败选手的自白
- SOJ4480 Easy Problem IV (并查集)
- 这就是裸金属服务器?
- HDU 6578 Blank
- 不只是休闲:关于体感游戏的一些思考(一)--- 开篇和“随身”物件
热门文章
- Redis高频面试笔记:mysql8.0新特性
- spring解析配置文件(三)
- APUE学习之三个特殊位 设置用户ID(set-user-ID),设置组ID(set-group-ID),sticky...
- Android保存图片到本地相册
- mysql.zip免安装版配置
- ibatis 中 $与#的区别
- 个人材料(上报公司)
- Spring Cloud 中 分布式事务解决方案 -- 阿里GTS的使用
- Hive2.1.1、Hadoop2.7.3 部署
- RUNOOB python练习题 35 python print各色字体及背景