LeetCode题解1367. 二叉树中的列表

给你一棵以 root 为根的二叉树和一个 head 为第一个节点的链表。

如果在二叉树中,存在一条一直向下的路径,且每个点的数值恰好一一对应以 head 为首的链表中每个节点的值,那么请你返回 True ,否则返回 False 。

一直向下的路径的意思是:从树中某个节点开始,一直连续向下的路径。

 

示例 1:

LeetCode题解1367. 二叉树中的列表

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

输出:true

解释:树中蓝色的节点构成了与链表对应的子路径。

示例 2:

LeetCode题解1367. 二叉树中的列表

输入: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 之间。

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/linked-list-in-binary-tree

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解:dp方程:
LeetCode题解1367. 二叉树中的列表
```js
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {ListNode} head
* @param {TreeNode} root
* @return {boolean}
*/
var isSubPath = function(head, root) {
if (head === null) {
return true
}
if (root === null) {
return false
}
return dfs(head, root) || isSubPath(head, root.left) || isSubPath(head, root.right)
};

function dfs(head, root) {
if (head === null) {
return true
}
if (root === null) {
return false
}
if (head.val !== root.val) {
return false
}
return dfs(head.next, root.left) || dfs(head.next, root.right)
}
```

相等在Java的HashMap中的作用 - java

关于HashMap的使用,我对equals性能有疑问。当我首先进行空检查时,如下所示:public boolean equals(final Object obj) { // object must be Test at this point if (obj == null) { return false; } } 如果没有的话,会更快一些。因此,要创建Ha…

LeetCode题解深度优先遍历和回溯的关系?

深度优先遍历的范围更大还是回溯的范围更大?为什么?题解:我的理解是:dfs是回溯思想的一种体现- 回溯:是在整个搜索空间中搜索出可行解,在搜索过程中不断剪枝回退,这是回溯的思想,这个搜索空间并没有限制于特定的数据结构。- dfs:dfs是指特定的数据结构中如图,树(特殊的图)中搜索答案,范围限制在了特定的数据结构。个人拙见。

LeetCode题解10个小球,随机分到12个盒子里,求恰好10个盒子都为空的概率。

10个小球,随机分到12个盒子里,求恰好10个盒子都为空的概率。要求用程序模拟十万次,暴力求出该概率来自:字节跳动 算法工程师一面的第一题 (3月30日,60分钟,牛客网视频面)https://www.nowcoder.com/discuss/395924

LeetCode题解堆排序和快速排序

堆排序和快速排序都是时间复杂度$O(nlogn)$ 的算法,其中 n 为数据规模。 那么两者谁更快呢? 为什么?题解:快排最坏情况下是O(n^2),平均和最好是O(nlogn) ,堆排序始终为O(nlogn),还是堆排序快吧

LeetCode题解足球排球和篮球

一个班级60%喜欢足球,70%喜欢篮球,80%喜欢排球,问:三种球都喜欢占比最大可能有多少,最小可能有多少?即求三种球都喜欢的比例范围题解:(1)首先确定最多的一种情况,就是 60% 喜欢足球的人同时也喜欢篮球和排球,此时为三种球都喜欢的人的最大比例。 (2)然后确定最小的一种情况,根据题目可以知道有 40%的人不喜欢足球,30%的人不喜欢篮球,20%的人不…