如何判斷乙個二叉樹是否為另乙個二叉樹的子樹

2021-08-04 15:53:54 字數 633 閱讀 7229

1. 遞迴的方式

/*struct treenode

};*/

class solution

bool getresult(treenode* p1,treenode* p2)

};遞迴的過程如上面所示,需要注意的是這是兩個不同的遞迴過程!!!!

2. 序列化然後利用kmp演算法進行模式串的匹配

kmp演算法的時間複雜度為o(m+n),可以用均攤分析來證明。具體的證明可以檢視

普通的模式串匹配演算法的時間複雜度為o(m*n)

/*struct treenode

};*/

class solution

void getresult(treenode* r,string& s)

getresult(r->left,s);

getresult(r->right,s);

return;  

}bool getkmp(string s1,string s2)  

}return false;

}//求s1的next陣列

int* getnext(string b)      

return next;  }};

字串匹配演算法除了kmp之外還有bm等。

判斷乙個二叉樹是另乙個二叉樹的子樹

輸入兩棵二叉樹a和b,判斷b是不是a的子結構。該方法是在a樹中找到乙個與b樹的根節點相等的元素的結點,從這個相等的結點開始判斷樹b是不是樹a的子結構,如果找到其的乙個就返回,否則直到所有的結點都找完為止。param root1 樹a的根結點 param root2 樹b的根結點 return tru...

設計乙個演算法,判斷乙個二叉樹是否為完全二叉樹

思想 根據完全二叉樹的定義,對完全二叉樹按照從上到下 從左到右的層次遍歷,應該滿足一下兩條要求 某節點沒有左孩子,則一定無右孩子 若某節點缺左或右孩子,則其所有後繼一定無孩子 若不滿足上述任何一條,均不為完全二叉樹。演算法思路 採用層序遍歷演算法,用cm變數值表示迄今為止二叉樹為完全二叉樹 其初值為...

判斷乙個二叉樹是否對稱

面試題裡不光要求結構上對稱,而且要求對稱結點中的內容一樣 可以使用遞迴的方法,同時比較左子樹的左結點和右子樹的右結點,比較左子樹的右結點和右子樹的左結點。如下 public class test boolean judge node leftnode,node rightnode else if l...