樹的子結構 遞迴

2021-09-26 02:42:37 字數 798 閱讀 5343

傳送門

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

注意:在操作樹的時候,我們一定要注意邊界條件的檢查,即檢查空指標,當樹a或樹b為空的時候,定義相應的輸出。

如果沒有檢查並進行相應的處理,則程式非常容易崩潰。

同時,還有乙個細節值得注意:本題中節點中值的型別為double,在判斷兩個節點的值是不是相等的時候,不能直接使用==來進行判斷,這是因為計算機在表示小數時(float,double)都有誤差,判斷兩個小數是否相等,只能判斷它們之差的絕對值是不是在乙個很小的範圍內,如果兩個數相差很小,那麼就可以認為它們相等。

//樹的子結構,遞迴

/*struct treenode

};*/

const double eps = 0.0000001;

class solution

~solution()

//小數比較大小

bool isequal(double a,double b)

bool issubtree(treenode* proot1,treenode* proot2)

bool hassubtree(treenode* proot1, treenode* proot2)

if(hassubtree(proot1->left,proot2)) return true;

if(hassubtree(proot1->right,proot2)) return true;

}return false;

}};

LeetCode小結 樹的最優子結構(遞迴)

做了很多樹的題目,發現非常多遞迴求最優子結構的 最大經過節點數 最長路徑等 大意 給定乙個二叉樹,找出其最大深度。二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。說明 葉子節點是指沒有子節點的節點。class solution 變型題 543.二叉樹的直徑 大意 給定一棵二叉樹,你需要計算它...

劍指offer 樹的子結構(遞迴 C )

原題鏈結 輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 相似題目 leetcode 題解 1367.二叉樹中的列表 樹的子結構 變形 c 二叉樹 遞迴 o n m o nm o nm 此題的 分為兩個部分 遍歷樹a中的所有非空節點r 同時用定義issame ...

樹的子結構

題目 輸入兩顆二叉樹a和b 判斷b是不是a的子結構 二叉樹結點定義如下 首先 從樹根開始遍歷樹 如果結點與 b的根結點值相同 則繼續遍歷a的左子樹 以及b的左子樹 如果左子樹相同則遍歷a的右子樹以及b的左子樹 如果左右子樹都相同則 a包含b 如果結點與b的根節點值不同 則遍歷到a的左孩子 重複上述判...