(剑指Offer)面试题18:树的子结构
生活随笔
收集整理的這篇文章主要介紹了
(剑指Offer)面试题18:树的子结构
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目:
輸入兩棵二叉樹(shù)A和B,判斷B是不是A的子結(jié)構(gòu)。
二叉樹(shù)結(jié)構(gòu)定義如下:
struct TreeNode{int val;TreeNode* left;TreeNode* right; };思路:
判斷二叉樹(shù)B是否為二叉樹(shù)A的子樹(shù):
首先判斷二叉樹(shù)A的根節(jié)點(diǎn)值是否等于二叉樹(shù)B的根節(jié)點(diǎn)值;
如果是,則繼續(xù)往下遍歷,判斷二叉樹(shù)A的左子節(jié)點(diǎn)和二叉樹(shù)B的左子結(jié)點(diǎn)以及二叉樹(shù)A的右子節(jié)點(diǎn)和二叉樹(shù)B的右子節(jié)點(diǎn)是否都相等,直到葉子節(jié)點(diǎn);(遞歸)
return IsSubtree(pRoot1->left,pRoot2->left) && IsSubtree(pRoot1->right,pRoot2->right);如果不是,則判斷二叉樹(shù)B是否為二叉樹(shù)A左子樹(shù)的子樹(shù)或者二叉樹(shù)B是否為二叉樹(shù)A右子樹(shù)的子樹(shù);(遞歸)
result=HasSubtree(pRoot1->left,pRoot2); result=HasSubtree(pRoot1->right,pRoot2);代碼:
struct TreeNode{int val;TreeNode* left;TreeNode* right; };bool IsSubtree(TreeNode* pRoot1,TreeNode* pRoot2){if(pRoot2==NULL)return true;if(pRoot1==NULL)return false;if(pRoot1->val!=pRoot2->val)return false;return IsSubtree(pRoot1->left,pRoot2->left) && IsSubtree(pRoot1->right,pRoot2->right); }bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2){bool result=false;if(pRoot1!=NULL && pRoot2!=NULL){if(pRoot1->val==pRoot2->val)result=IsSubtree(pRoot1,pRoot2);if(!result)result=HasSubtree(pRoot1->left,pRoot2);if(!result)result=HasSubtree(pRoot1->right,pRoot2);}return result; }在線測(cè)試OJ:
http://www.nowcoder.com/books/coding-interviews/6e196c44c7004d15b1610b9afca8bd88?rp=1
AC代碼:
class Solution { public:bool IsSubtree(TreeNode* pRoot1,TreeNode* pRoot2){if(pRoot2==NULL)return true;if(pRoot1==NULL)return false;if(pRoot1->val!=pRoot2->val)return false;return IsSubtree(pRoot1->left,pRoot2->left) && IsSubtree(pRoot1->right,pRoot2->right);}bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2){bool result=false;if(pRoot1!=NULL && pRoot2!=NULL){if(pRoot1->val==pRoot2->val)result=IsSubtree(pRoot1,pRoot2);if(!result)result=HasSubtree(pRoot1->left,pRoot2);if(!result)result=HasSubtree(pRoot1->right,pRoot2);}return result;} };
總結(jié)
以上是生活随笔為你收集整理的(剑指Offer)面试题18:树的子结构的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: BZOJ1012|JSOI最大数maxn
- 下一篇: 《JavaScript设计模式与开发实践