1367 二叉树中的列表
题目描述:
给你一棵以 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 二叉树中的列表相关推荐
- 1367. 二叉树中的列表
1367. 二叉树中的列表 原始题目链接:https://leetcode-cn.com/problems/linked-list-in-binary-tree/ 给你一棵以 root 为根的二叉树和 ...
- LeetCode 1367. 二叉树中的列表(双重递归)
1. 题目 给你一棵以 root 为根的二叉树和一个 head 为第一个节点的链表. 如果在二叉树中,存在一条一直向下的路径,且每个点的数值恰好一一对应以 head 为首的链表中每个节点的值,那么请你 ...
- 1367 二叉树中的列表(递归)
1. 问题描述: 给你一棵以 root 为根的二叉树和一个 head 为第一个节点的链表. 如果在二叉树中,存在一条一直向下的路径,且每个点的数值恰好一一对应以 head 为首的链表中每个节点的值,那 ...
- Leetcode1367.二叉树中的列表
1367:二叉树中的列表 题目 思路一 思路二 题目 给你一棵以 root 为根的二叉树和一个 head 为第一个节点的链表. 如果在二叉树中,存在一条一直向下的路径,且每个点的数值恰好一一对应以 h ...
- 14.相同的树另一棵树的子树检查子树二叉树中的列表(教你们使用相同的套路快速解决这四道题)
一.相同的树 这道题是开胃菜的开始,使用递归进行解决 递归三部曲: 确定递归函数的参数和返回值 因为我们要比较的是两棵树是否相等,所以参数分别是两棵树的根节点,返回值为boolean类型,即两棵树是否 ...
- leetcode算法题--二叉树中的列表★
原题链接:https://leetcode-cn.com/problems/linked-list-in-binary-tree/ 嵌套递归 bool isSubPath(ListNode* head ...
- leetcode算法题--二叉树中的最长交错路径★
原题链接:https://leetcode-cn.com/problems/longest-zigzag-path-in-a-binary-tree/ 嵌套递归(超时) 相关题目:二叉树中的列表 in ...
- 【每日一算法】二叉树中所有距离为 K 的结点
微信改版,加星标不迷路! 每日一算法-二叉树中所有距离为K的节点 给定一个二叉树(具有根结点 root), 一个目标结点 target ,和一个整数值 K . 返回到目标结点 target 距离为 K ...
- 二叉树路径和最大python_python3实现在二叉树中找出和为某一值的所有路径(推荐)...
请写一个程序创建一棵二叉树,并按照一定规则,输出二叉树根节点到叶子节点的路径. 规则如下: 1.从最顶端的根结点,到最下面的叶子节点,计算路径通过的所有节点的和,如果与设置的某一值的相同,那么输出这条 ...
最新文章
- extern数组与extern指针
- 在ubuntu下安显卡驱动
- 绿色数据中心将惠及众生
- epoll 版 高并发服务器
- IT英语2-编程词汇编程英语词汇
- 如何在mysql中添加复选框_如何使用输入和复选框更新mysql
- 深度linux登录后界面卡死,Deepin Linux 15(.1)启动即卡死的问题
- C语言之文件读写探究(二):fputc、fgetc、feof(一次读写一个字符(文本操作))
- sql数据库 订阅发布_如何使用中央发布者和多个订阅者数据库设置自定义SQL Server事务复制
- 数据库热备份 Xtrabackup安装及使用
- python字典_Python字典
- File Converter——万能格式转化神器
- 计算机EXE文件改参数,笔记本专用xp系统修改注册表参数导致exe格式文件无法打开怎么办...
- 疫情推动下的云联络中心终于引起了销售行业的重视。
- Mybatis学习之一 引入dtd文件
- 2.1.1队列——雏形(初始版本)
- 柿子营养丰富 吃柿子的几点注意
- ASP数组Ubound与Lbound
- CS和IP寄存器的作用及执行分析
- 【电子学会】2019年09月图形化三级 -- 猫咪抓老鼠游戏