力扣 1367. 二叉树中的列表 链表 dfs

https://leetcode-cn.com/problems/linked-list-in-binary-tree/
力扣 1367. 二叉树中的列表 链表 dfs_第1张图片

思路:很自然的想到一种解法,即对树中的每个节点都做一次判断。双 d f s dfs dfs即可。

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    //以root为根节点 遍历链表进行判断
    bool dfs(ListNode* head,TreeNode* root){
        if(!head)
            return 1;
        if(!root)
            return 0;
        if(head->val!=root->val)
            return 0;
        return dfs(head->next,root->left)||dfs(head->next,root->right);
    }
    bool isSubPath(ListNode* head, TreeNode* root) {
        if(!head)
            return 1;
        if(!root)
            return 0;
        //以root为根 或者递归判断左右子树
        return dfs(head,root)||isSubPath(head,root->left)||isSubPath(head,root->right);
    }
};

你可能感兴趣的:(力扣,DFS,链表)