题目描述:
给你一棵以 root 为根的二叉树和一个 head 为第一个节点的链表。
如果在二叉树中,存在一条一直向下的路径,且每个点的数值恰好一一对应以 head 为首的链表中每个节点的值,那么请你返回 True ,否则返回 False 。
一直向下的路径的意思是:从树中某个节点开始,一直连续向下的路径。

示例 1:
输入:head = [4,2,8], root = [1,4,4,null,2,2,null,1,null,6,8,null,null,null,null,1,3]
输出:true
解释:树中蓝色的节点构成了与链表对应的子路径。

示例 2:
输入:head = [1,4,2,6], root = [1,4,4,null,2,2,null,1,null,6,8,null,null,null,null,1,3]
输出:true

示例 3:
输入:head = [1,4,2,6,8], root = [1,4,4,null,2,2,null,1,null,6,8,null,null,null,null,1,3]
输出:false
解释:二叉树中不存在一一对应链表的路径。

提示:
二叉树和链表中的每个节点的值都满足 1 <= node.val <= 100 。
链表包含的节点数目在 1 到 100 之间。
二叉树包含的节点数目在 1 到 2500 之间。

方法1:
主要思路:解题链接汇总
(1)递归;
(2)先递归找根节点和链表第一个值相同的结点;
(3)找到之后,从树的该节点开始,递归向下判断是否存在和链表相同的路径;

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {public://递归判断当前树结点下是否存在包含链表中的结点值的路径bool is_valid(ListNode*head,TreeNode* root){if(head==NULL){//链表遍历结束,存在,返回truereturn true;}if(root==NULL||root->val!=head->val){//到了空节点或值不再符合要求,返回falsereturn false;}return is_valid(head->next,root->left)||is_valid(head->next,root->right);//接着向下判断树和链表}bool isSubPath(ListNode* head, TreeNode* root) {if(root==NULL){//树到空节点return false;}if(root->val==head->val){//是否可以进一步判读if(is_valid(head,root)){//说明从当前结点出发,存在满足要求的路径return true;}}return isSubPath(head,root->left)||isSubPath(head,root->right);//递归找符合要求的树的结点}
};

1367 二叉树中的列表相关推荐

  1. 1367. 二叉树中的列表

    1367. 二叉树中的列表 原始题目链接:https://leetcode-cn.com/problems/linked-list-in-binary-tree/ 给你一棵以 root 为根的二叉树和 ...

  2. LeetCode 1367. 二叉树中的列表(双重递归)

    1. 题目 给你一棵以 root 为根的二叉树和一个 head 为第一个节点的链表. 如果在二叉树中,存在一条一直向下的路径,且每个点的数值恰好一一对应以 head 为首的链表中每个节点的值,那么请你 ...

  3. 1367 二叉树中的列表(递归)

    1. 问题描述: 给你一棵以 root 为根的二叉树和一个 head 为第一个节点的链表. 如果在二叉树中,存在一条一直向下的路径,且每个点的数值恰好一一对应以 head 为首的链表中每个节点的值,那 ...

  4. Leetcode1367.二叉树中的列表

    1367:二叉树中的列表 题目 思路一 思路二 题目 给你一棵以 root 为根的二叉树和一个 head 为第一个节点的链表. 如果在二叉树中,存在一条一直向下的路径,且每个点的数值恰好一一对应以 h ...

  5. 14.相同的树另一棵树的子树检查子树二叉树中的列表(教你们使用相同的套路快速解决这四道题)

    一.相同的树 这道题是开胃菜的开始,使用递归进行解决 递归三部曲: 确定递归函数的参数和返回值 因为我们要比较的是两棵树是否相等,所以参数分别是两棵树的根节点,返回值为boolean类型,即两棵树是否 ...

  6. leetcode算法题--二叉树中的列表★

    原题链接:https://leetcode-cn.com/problems/linked-list-in-binary-tree/ 嵌套递归 bool isSubPath(ListNode* head ...

  7. leetcode算法题--二叉树中的最长交错路径★

    原题链接:https://leetcode-cn.com/problems/longest-zigzag-path-in-a-binary-tree/ 嵌套递归(超时) 相关题目:二叉树中的列表 in ...

  8. 【每日一算法】二叉树中所有距离为 K 的结点

    微信改版,加星标不迷路! 每日一算法-二叉树中所有距离为K的节点 给定一个二叉树(具有根结点 root), 一个目标结点 target ,和一个整数值 K . 返回到目标结点 target 距离为 K ...

  9. 二叉树路径和最大python_python3实现在二叉树中找出和为某一值的所有路径(推荐)...

    请写一个程序创建一棵二叉树,并按照一定规则,输出二叉树根节点到叶子节点的路径. 规则如下: 1.从最顶端的根结点,到最下面的叶子节点,计算路径通过的所有节点的和,如果与设置的某一值的相同,那么输出这条 ...

最新文章

  1. extern数组与extern指针
  2. 在ubuntu下安显卡驱动
  3. 绿色数据中心将惠及众生
  4. epoll 版 高并发服务器
  5. IT英语2-编程词汇编程英语词汇
  6. 如何在mysql中添加复选框_如何使用输入和复选框更新mysql
  7. 深度linux登录后界面卡死,Deepin Linux 15(.1)启动即卡死的问题
  8. C语言之文件读写探究(二):fputc、fgetc、feof(一次读写一个字符(文本操作))
  9. sql数据库 订阅发布_如何使用中央发布者和多个订阅者数据库设置自定义SQL Server事务复制
  10. 数据库热备份 Xtrabackup安装及使用
  11. python字典_Python字典
  12. File Converter——万能格式转化神器
  13. 计算机EXE文件改参数,笔记本专用xp系统修改注册表参数导致exe格式文件无法打开怎么办...
  14. 疫情推动下的云联络中心终于引起了销售行业的重视。
  15. Mybatis学习之一 引入dtd文件
  16. 2.1.1队列——雏形(初始版本)
  17. 柿子营养丰富 吃柿子的几点注意
  18. ASP数组Ubound与Lbound
  19. CS和IP寄存器的作用及执行分析
  20. 【电子学会】2019年09月图形化三级 -- 猫咪抓老鼠游戏

热门文章

  1. 两台电脑直接连接共享资料
  2. linux下Oracle常用命令
  3. 微服务系统设计(一) -- 如何拆分服务
  4. go开源网络库nano(6)-hander逻辑
  5. AWVS13的安装过程
  6. 要命啦!Word中快速录入大全,内含快捷键小技巧,快来一起学习!
  7. 最大后验估计(MAP)
  8. 诺基亚论坛PRO数位红
  9. maya python插件_Maya Python - ALembic导入导出助手
  10. pacemaker+drbd主从