zoukankan      html  css  js  c++  java
  • LC 1367. Linked List in Binary Tree (KMP)

    link

    /**
     * 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:
        bool isSubPath(ListNode* head, TreeNode* root) {
            vector<int> arr;
            while(head!=NULL){
                arr.push_back(head->val);
                head=head->next;
            }
            int n=arr.size();
            vector<int> table(n);
            int len=0;
            for(int i=1;i<n;){
                if(arr[i]==arr[len]){
                    len++;
                    table[i++]=len;
                }else{
                    if(len==0){
                        table[i++]=0;
                    }else{
                        len=table[len-1];
                    }
                }
            }
            return helper(table,root,arr,0);
        }
        
        bool helper(vector<int>& table, TreeNode* root, vector<int>& arr, int idx){
            if(idx==arr.size()) return true;
            if(root==NULL) return false;
            if(root->val==arr[idx]){
                return helper(table,root->left,arr,idx+1) || helper(table,root->right,arr,idx+1);
            }
            while(idx>0){
                idx=table[idx-1];
                if(root->val==arr[idx]){
                    return helper(table,root->left,arr,idx+1) || helper(table,root->right,arr,idx+1);
                }
            }
            return helper(table,root->left,arr,0) || helper(table,root->right,arr,0);
        }
    };
  • 相关阅读:
    装饰器模式
    doraemon的python 三元函数
    doraemon的python 文件操作
    doraemon的python 深浅拷贝和文件操作
    doraemon的python 集合
    doraemon的python 字典
    doraemon的python 列表
    doraemon 周总结1
    doraemon的python 练习
    doraemon的python之旅 整型、布尔值和字符串2
  • 原文地址:https://www.cnblogs.com/FEIIEF/p/12391635.html
Copyright © 2011-2022 走看看