題目:
輸入兩棵二叉樹a,b,判斷b是不是a的子結構。(ps:我們約定空樹不是任意乙個樹的子結構)思路:
1、首先設定標誌位result = false,因為一旦匹配成功result就設為true,剩下的**不會執行,如果匹配不成功,預設返回false
2、遞迴思想,如果根節點相同則遞迴呼叫baohan(),
如果根節點不相同,則判斷tree1的左子樹和tree2是否相同,
再判斷右子樹和tree2是否相同
3、注意null的條件,hassubtree中,如果兩棵樹都不為空才進行判斷,
baohan中,如果tree2為空,則說明第二棵樹遍歷完了,即匹配成功,
tree1為空有兩種情況(1)如果tree1為空&&tree2不為空說明不匹配,
(2)如果tree1為空,tree2為空,說明匹配。
**:
packagelg.nowcoder;
/*** @author liguo
* @description 樹的子結構
* 輸入兩棵二叉樹a,b,判斷b是不是a的子結構。(ps:我們約定空樹不是任意乙個樹的子結構)
1、首先設定標誌位result = false,因為一旦匹配成功result就設為true,
剩下的**不會執行,如果匹配不成功,預設返回false
2、遞迴思想,如果根節點相同則遞迴呼叫baohan(),
如果根節點不相同,則判斷tree1的左子樹和tree2是否相同,
再判斷右子樹和tree2是否相同
3、注意null的條件,hassubtree中,如果兩棵樹都不為空才進行判斷,
baohan中,如果tree2為空,則說明第二棵樹遍歷完了,即匹配成功,
tree1為空有兩種情況(1)如果tree1為空&&tree2不為空說明不匹配,
(2)如果tree1為空,tree2為空,說明匹配。
* @data 2018-08-14 10:47 */
public
class
solution6
return
result;
}public
static
boolean
baohan(treenode root1,treenode root2)
}
結構上的演算法 陣列
陣列實際上是以數為索引,以某種結構為排列的一種結構,通常要解決的問題即是查詢,排序,字串,各種數字類問題等 陣列問題優先要向o n 然後是o logn 考慮 通用型演算法有 基於o n 的partition演算法 每5個作插入,所有中間值作傳統partition演算法的select中位數演算法 基於...
演算法(資料結構)
空間不夠儲存 給40億個不重複的unsigned int的整數,沒排過序的,然後再給乙個數,如何快速判斷這個數是否在那40億個數當中 40億個數空間儲存的問題 利用對映 分析 unsigned 範圍是2 32 40億大約大約4g個數不到,常規方法肯定是不行的 我們你可以利用 伴隨陣列 那種思想利用記...
演算法 資料結構
演算法是程式的核心,演算法的好壞直接決定了程式的好壞 基礎的幾種演算法 二分查詢 氣泡排序 插入排序 選擇排序 快速排序 二分查詢 假設資料是按公升序排序的,對於給定值x,從序列的中間位置開始比較,如果當前位置值等於x,則查詢成功 若x小於當前位置值,則在數列的前半段中查詢 若x大於當前位置值則在數...