LeetCode/java/linked-list-in-binary-tree.java
Matej Focko 2ee32d75a6
java: add «1367. Linked List in Binary Tree»
Signed-off-by: Matej Focko <me@mfocko.xyz>
2024-09-07 12:29:14 +02:00

37 lines
873 B
Java

class Solution {
private boolean matches(ListNode head, TreeNode node) {
// linked list ran out ⇒ matches
if (head == null) {
return true;
}
// ran out of tree nodes ⇒ failed
if (node == null) {
return false;
}
// values don't match ⇒ failed
if (head.val != node.val) {
return false;
}
// check rest of the path
return matches(head.next, node.left) || matches(head.next, node.right);
}
public boolean isSubPath(ListNode head, TreeNode node) {
// cannot form a subpath
if (node == null) {
return false;
}
// check path starting from the current node
var result = matches(head, node);
// if doesn't match linked list, try from subtrees
result = result || isSubPath(head, node.left);
result = result || isSubPath(head, node.right);
return result;
}
}