判斷樹的子結構

2021-09-25 08:10:41 字數 1053 閱讀 1177

題目描述

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

時間限制:1秒 空間限制:32768k

分析:a 和 b兩棵樹

(1)根節點的value是否匹配

(2)若匹配,進行a與b根節點的左子樹與右子樹的匹配

(3)不匹配,判斷a的左子樹和右子樹的根結點是否和b的根節點匹配

重複進行上述(2)(3)部分

基本思路就是第一步先找到在a中與b的根節點的值相等的節點c,第二步判斷以c為根節點的樹種是否含有與b相同結構的子樹

例如:在上述的樹中,先在a樹中找到了乙個和b的根節點值相等的節點就是a的根節點,但是a的根節點的子樹卻和b不匹配,我們需要在a中繼續遍歷查詢和b根節點值相等的節點,在a的第二層我們又找到了乙個值為8的節點,進行第二步判斷即判斷這個根節點下是否含有和樹b一樣結構的子樹,我們遍歷這個節點下面的子樹,得到左右子節點的值為9、2這和b樹的結構一樣,因此我們可以判斷樹b是a的子結構。

具體實現就是採用樹的遍歷和遞迴

/*

struct treenode

};*/

class solution

if(!flag)//在左子樹中繼續找

if(!flag)

}return flag;

}bool issubtree(treenode *roota,treenode *rootb)//判斷樹a裡面有沒有樹b的子結構

if(roota==null)//若是樹a被遍歷完,而樹b還未被遍歷完,證明a中不存在b的子結構

if(roota->val!=rootb->val)

return issubtree(roota->left,rootb->left) && issubtree(roota->right,rootb->right);//若是a與b的值剛好相等,判斷各自的子樹的值相等否}};

以上就是樹的子結構的思路以及實現過程。

判斷樹的子結構

輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 思路 判斷b是不是a的子結構,就需要依次拿a的節點和b的根節點相比較,如果相同,則比較其左右節點是否相同,知道b二叉樹遍歷完。運用遞迴 usr bin env python coding utf 8 class ...

判斷樹的子結構

輸入兩顆二叉樹,判斷b是不是a的子結構。約定空樹不是任意乙個數的子結構 b是a的子結構,即a中有出現和b中相同的結構及節點值。例如 求解思路 1.先遍歷樹a,在a中找到b的根節點。若b是a的字數,則b的根節點必然是a的節點之一 2.在a中找到b的根節點後,遞迴比較根節點及剩下的左右子樹是否都相等 補...

判斷樹的子結構

問題 輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 分析 1 子樹的兩種形式 1 子樹位於左孩子或右孩子枝,及b是a的左孩子或右孩子。2 兩棵樹擁有相同的根節點,子樹更短。2 判斷過程 1 父親樹依次尋找與子樹根節點相同的節點,將找到的節點作為子樹b2的根節...