反轉連結串列、合併連結串列、樹的子結構
反轉連結串列
程式碼:每次把節點往前加
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode *pre=NULL;
auto p=head;
while(p)
{
auto temp=p->next;
p->next=pre;
pre=p;
p=temp;
}
return pre;
}
};
合併連結串列
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* merge(ListNode* l1, ListNode* l2) {
ListNode *temp=new ListNode(-1);
auto p=temp;
while(l1 && l2)
{
if(l1->val < l2->val)
{
p->next=l1;
l1=l1->next;
p=p->next;
}
else{
p->next=l2;
l2=l2->next;
p=p->next;
}
}
if(l1)
{
p->next=l1;
}
else p->next=l2;
return temp->next;
}
};
樹的子結構
/**
* 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 hasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) {
if(!pRoot1 || !pRoot2) return false;
if(match(pRoot1,pRoot2)) return true;
return hasSubtree(pRoot1->left,pRoot2) || hasSubtree(pRoot1->right,pRoot2);
}
bool match(TreeNode * root1,TreeNode * root2)
{
if(!root2) return true;
if(!root1) return false;
if(root1->val != root2->val ) return false;
return match(root1->left,root2->left) && match(root1->right,root2->right);
}
};
相關文章
- 資料結構之連結串列:206. 反轉連結串列資料結構
- 反轉連結串列
- #反轉連結串列_C++版 #反轉連結串列_Java版 @FDDLCC++Java
- 【LeetCode-連結串列】面試題-反轉連結串列LeetCode面試題
- 1025 反轉連結串列
- 264反轉連結串列
- leetcode 反轉連結串列LeetCode
- **203.移除連結串列元素****707.設計連結串列****206.反轉連結串列**
- leetcode 92 反轉連結串列ⅡLeetCode
- 連結串列反轉問題
- 206. 反轉連結串列
- 資料結構實驗之連結串列四:有序連結串列的歸併資料結構
- 資料結構-單連結串列、雙連結串列資料結構
- [連結串列】2.輸入一個連結串列,反轉連結串列後,輸出新連結串列的表頭。[多益,位元組考過]
- 演算法基礎~連結串列~排序連結串列的合併(k條)演算法排序
- leetcode:21. 合併兩個有序連結串列(連結串列,簡單)LeetCode
- TypeScript 實現連結串列反轉TypeScript
- 反轉一個單連結串列。
- leetcode206. 反轉連結串列LeetCode
- 反轉連結串列系列問題
- java實現連結串列反轉Java
- leetcode 206.反轉連結串列LeetCode
- [leetcode 92] 反轉連結串列 IILeetCode
- leetcode 206. 反轉連結串列LeetCode
- JZ-015-反轉連結串列
- Hash連結串列轉換為紅黑樹,和樹轉換為連結串列的條件
- 程式碼隨想錄第3天 | 連結串列 203.移除連結串列元素,707.設計連結串列,206.反轉連結串列
- 合併K個排序連結串列排序
- 合併兩個有序連結串列
- 資料結構和演算法——Go實現單連結串列並且反轉單連結串列資料結構演算法Go
- 連結串列 - 單向連結串列
- 連結串列-迴圈連結串列
- 連結串列-雙向連結串列
- 反轉連結串列(遞迴與棧)遞迴
- LeetCode-Python-(206)反轉連結串列LeetCodePython
- 反轉相鄰連結串列單元
- LeetCode-092-反轉連結串列 IILeetCode
- leetCode206 反轉連結串列ILeetCode