16 樹的子結構 這題多複習

2022-07-29 02:57:17 字數 1252 閱讀 5117

輸入兩棵二叉樹a,b,判斷b是不是a的子結構。(ps:我們約定空樹不是任意乙個樹的子結構)

這題分兩步:

第1:在樹a中找到和樹b的根節點的值一樣的節點r,注意樹的節點值可以有多個相同的值。

第2:判斷樹a中以r為根節點的子樹是不是包含和b一樣的樹結構。

這題難在遞迴基和判斷樹節點為空該返回什麼,一定要記清楚找頭結點的時候遇到空節點就返回錯,helper函式如果子樹為空,還有就是result的使用。

說明已經匹配完了,返回true;如果是樹a為空,說明匹配不到子樹,返回false。

理解難點:helper每次返回以該根節點開始的是否匹配,然後判斷左子樹和右子樹是否匹配。

/*

struct treenode

};*/

class

solution

if(proot1 ==nullptr)

if(proot1 -> val != proot2 ->val)

return helper(proot1 -> left,proot2 -> left) && helper(proot1 -> right,proot2 ->right);

}bool hassubtree(treenode* proot1, treenode*proot2)

bool result = false

;

if(proot1 -> val == proot2 ->val)

if(!result)

if(!result)

return

result;

}};

/*

struct treenode

};*/

class

solution

if(proot1 ==nullptr)

if(proot1 -> val != proot2 ->val)

return helper(proot1 -> left,proot2 -> left) && helper(proot1 -> right,proot2 ->right);

}bool hassubtree(treenode* proot1, treenode*proot2)

if(proot1 -> val == proot2 ->val)

}return helper(proot1 -> left,proot2) || helper(proot1 ->right,proot2);

}};

演算法複習 樹的子結構

輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 分成兩步,第一步先從樹1中找到樹2的根節點,找到後就開始判斷子樹是否相同,否則從樹1繼續向下找,顯然可以使用遞迴實現。第二步是找到根節點後判斷樹是否相同,也可以使用遞迴,遞迴的出口是到樹2的葉子節點,即上面的節點...

程式設計題 樹的子結構

思路 正確理解題意 子結構到底是啥意思?很容易弄混淆的是子樹和子結構,下圖黃色黃是子樹,黑色框是子結構但不是子樹 一棵大樹 a,一棵小樹 b,若 b 是 a 的子樹,則 b 和 a 的乙個子節點c的結點值完全相同,它們倆的左子樹 右子樹所有結點的值也完全相同,子結構要求則沒那麼嚴格 1先寫乙個方法,...

演算法刷題 樹的子結構

問題 輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 思路 1 判斷b是不是空樹,如果是空樹,返回false 2 判斷a是不是空樹,如果是空樹,返回false 3 如果找到了對應b的根節點的點,即在這時候ab相同了,以這個根節點為為起點判斷是否包含b 4 判斷...