promblem:
給定兩個二叉樹t1和t2,返回t1的某個子樹結構是否與t2的結構相等。
solution:
首相將兩棵樹進行序列化【切記加上分割符和空節點標記】,
然後使用kmp演算法進行兩個字串匹配,判斷子樹串是否屬於原樹串即可
code:
1#pragma once
2 #include 3 #include 45
using
namespace
std;67
struct
node813
};14
15void getsequence(string &str, node*root)
1625}26
27void getindex(int*& index, string
str)
2844}45
}4647bool issubtree(node* root1, node*root2)
4868
else
if (-1 ==index[j])
6973
else
74 j =index[j];75}
76delete
index;
77return (i <= str1.length() && j >=str2.length());78}
7980
void
test()
81
判斷兩個時間段是否重疊的演算法
判斷兩個時間段是否重疊,如 startdate1 enddate1 startdate2 enddate2 兩個時間的重疊分4種情況,若你一一列出這四種情況來判斷是否重疊那就弱爆了,最簡單的方法 startdate1 enddate2 and enddate1 startdate2 若你無法理解上面...
在二叉樹中找到兩個節點的最近公共祖先 高階
在二叉樹中找到兩個節點的最近公共祖先 高階 給定一棵二叉樹,多次給出這棵樹上的兩個節點 o1 和 o2,請對於每次詢問,找到 o1 和 o2 的最近公共祖先節點。輸入描述 第一行輸入兩個整數 n 和 root,n 表示二叉樹的總節點個數,root 表示二叉樹的根節點。以下 n 行每行三個整數 fa,...
演算法 求二叉樹中兩個節點的最大距離
如果我們把二叉樹看成乙個圖,父子節點之間的連線看成是雙向的,定義 距離 為這條路徑上所有節點的value和。寫乙個程式求一棵二叉樹中最大的路徑距離。對於這個圖,最大的路徑是從5 3 7,距離為15的路徑。採用後序遍歷,對於每乙個節點儲存經過當前節點的單邊路徑的最大距離,定義為single max,為...