题意:

给定一个先序遍历序列,给出一棵树,问能否通过翻转改树的某些左右子节点,使得该树的先序遍历序列等于给定的先序遍历序列

思路:

很基础的题目了,就是先序遍历一下,如果在这个节点的左子节点的值不等于行程中下一个值,但是右子节点的值等于,那么就翻转一下,如果两个子节点的值都不等于,那么就没有解了。

class Solution {
public:vector<int>ve;bool flag = true;int num = 0;vector<int> flipMatchVoyage(TreeNode* root, vector<int>& voyage) {num = 0;ve.clear();flag = true;dfs(root,voyage);if(!flag){ve.clear();ve.push_back(-1);}return ve;}void dfs(TreeNode* root,vector<int>& voyage){if(root->val!=voyage[num]){flag = false; }if(!flag)return ;if(root->left!=NULL){if(root->left->val!=voyage[num+1]&&root->right!=NULL&&root->right->val==voyage[num+1]){ve.push_back(root->val);TreeNode* node = root->left;root->left = root->right;root->right = node;}num++;dfs(root->left,voyage);}if(root->right!=NULL){num++;dfs(root->right,voyage);}}
};

【leetcode 971】 翻转二叉树以匹配先序遍历相关推荐

  1. LeetCode 971. 翻转二叉树以匹配先序遍历(DFS)

    1. 题目 给定一个有 N 个节点的二叉树,每个节点都有一个不同于其他节点且处于 {1, -, N} 中的值. 通过交换节点的左子节点和右子节点,可以翻转该二叉树中的节点. 考虑从根节点开始的先序遍历 ...

  2. 971. 翻转二叉树以匹配先序遍历

    给定一个有 N 个节点的二叉树,每个节点都有一个不同于其他节点且处于 {1, ..., N} 中的值. 通过交换节点的左子节点和右子节点,可以翻转该二叉树中的节点. 考虑从根节点开始的先序遍历报告的 ...

  3. leetcode971. 翻转二叉树以匹配先序遍历

    leetcode971. 翻转二叉树以匹配先序遍历 这道题的说明还没有题目清晰,所以不粘题内容了. 思路 前序遍历,遇到当前节点和对应的voyage值不相等的时候,返回false. 并且看当前节点的左 ...

  4. leetcode971. 翻转二叉树以匹配先序遍历(dfs)

    给定一个有 N 个节点的二叉树,每个节点都有一个不同于其他节点且处于 {1, -, N} 中的值. 通过交换节点的左子节点和右子节点,可以翻转该二叉树中的节点. 考虑从根节点开始的先序遍历报告的 N ...

  5. 二叉树非递归先序遍历

    二叉树的递归先序遍历很简单,假设二叉树的结点定义如下: 1 struct BinaryTreeNode 2 { 3 int m_nValue; 4 BinaryTreeNode* m_pLeft; 5 ...

  6. 二叉树建立及中序遍历C++语言实现

    二叉树建立及中序遍历C++语言实现: #include<stdio.h> #include<stdlib.h> typedef struct node{//二叉树结点数据结构定 ...

  7. 栈的亚特兰数与二叉树的前序中序遍历序列

    栈的亚特兰数与二叉树的前序中序遍历 @(算法学习) 已经熟知的是二叉树的中序遍历和先序遍历可以唯一确定一棵树. 更有趣的知识点是,以先序遍历序列作为入栈序列,那么出栈序列恰为中序遍历.这样就把两种遍历 ...

  8. 二叉树前中后序遍历的非递归实现以及层次遍历、zig-zag型遍历详解

    前言 二叉树的遍历是一个比较常见的问题,递归实现二叉树的前中后序遍历比较简单,但非递归实现二叉树的前中后序遍历相对有难度.这篇博客将详述如何使用非递归的方式实现二叉树的前中后序遍历,在进行理论描述的同 ...

  9. 二叉树,二叉树的归先序遍历,中序遍历,后序遍历,递归和非递归实现

    二叉树,二叉树的归先序遍历,中序遍历,后序遍历,递归和非递归实现 提示:今天开始,系列二叉树的重磅基础知识和大厂高频面试题就要出炉了,咱们慢慢捋清楚! 文章目录 二叉树,二叉树的归先序遍历,中序遍历, ...

最新文章

  1. 开源软件5大常见问题及解决方法
  2. sap 事务代码跳过权限检查
  3. 剑与远征英雄兑换码如此少见,新玩家连抽获得数位英雄
  4. 异步复位的串联T触发器
  5. Python二级笔记(7)
  6. Node.js 工具模块
  7. 无论PC还是Mac,都能畅快地使用移动硬盘
  8. Js实现滚动抽奖(作弊版)
  9. 使用Android 实现计算器功能
  10. PixiJS学习(9)动画序列帧
  11. opencv检测动态物体
  12. 小鑫の日常系列故事(七)——小纸条 (字符串) SDUT
  13. 第九章——规范数据库设计
  14. Java入门教程(视频)
  15. Spark累加器的作用和使用
  16. 序列1 - 以太坊的诞生,史上最大ICO之一
  17. 删除微软office正版验证补丁
  18. OpenFPGA: 一起跨年吧!
  19. 服务器显示文件后缀名,获取文件后缀名
  20. C#时间戳计算公式、毫秒级时间戳

热门文章

  1. Ubuntu16.04笔记本 安装R RStudio
  2. 查找数组中重复的元素
  3. 利用python实现两个文件夹的同步
  4. tekton EventListener资源
  5. 进程间各种通信方式的C++实现
  6. AWS KVS(Kinesis Video Streams)之WebRTC
  7. AppImage应用启动报错:Cannot mount AppImage, please check your FUSE setup
  8. Python: 异常处理
  9. 电脑无法分屏,连接两个显示器,但只能检测到一个显示器,且只有一个显示器有画面
  10. Java 8 的 Optional 类抛异常