在C++中,如何判斷兩棵二叉樹是否相同或相似

在C++中,判斷兩棵二叉樹是否相同或相似可以通過遞歸的方式進行比較。首先,我們需要定義一個二叉樹節(jié)點的結(jié)構(gòu)體,然后編寫一個函數(shù)來比較兩個節(jié)點是否相等。如果兩個節(jié)點的值相等,并且它們的左右子樹也分別相等,那么這兩棵樹就是相同的。

以下是一個簡單的示例代碼:


#include <iostream>
struct TreeNode {
    int val;
    TreeNode* left;
    TreeNode* right;
    TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
bool isSameTree(TreeNode* p, TreeNode* q) {
    if (p == NULL && q == NULL) return true; // 如果兩個節(jié)點都為空,返回true
    if (p == NULL || q == NULL) return false; // 如果其中一個節(jié)點為空,返回false
    if (p->val != q->val) return false; // 如果兩個節(jié)點的值不相等,返回false
    return isSameTree(p->left, q->left) && isSameTree(p->right, q->right); // 遞歸比較左右子樹
}
int main() {
    TreeNode* tree1 = new TreeNode(1);
    tree1->left = new TreeNode(2);
    tree1->right = new TreeNode(3);
    TreeNode* tree2 = new TreeNode(1);
    tree2->left = new TreeNode(2);
    tree2->right = new TreeNode(3);
    if (isSameTree(tree1, tree2)) {
        std::cout << "兩棵樹相同" << std::endl;
    } else {
        std::cout << "兩棵樹不相同" << std::endl;
    }
    return 0;
}

在這個示例中,我們定義了一個名為isSameTree的函數(shù),它接受兩個TreeNode指針作為參數(shù)。這個函數(shù)首先檢查兩個節(jié)點是否都為空,如果是,則返回true。如果其中一個節(jié)點為空,另一個不為空,則返回false。接下來,它比較兩個節(jié)點的值,如果不相等,則返回false。最后,它遞歸地比較兩個節(jié)點的左右子樹。如果所有條件都滿足,那么這兩棵樹就是相同的。

主站蜘蛛池模板: 久久精品国产一区二区电影| 国内偷窥一区二区三区视频| 一区二区三区国模大胆| 亚洲国产高清在线一区二区三区| 久久久一区二区三区| 2020天堂中文字幕一区在线观| 精品无码国产一区二区三区AV| 国产一区二区三区小向美奈子 | 精品久久一区二区三区| 精品国产天堂综合一区在线| 中文字幕精品亚洲无线码一区应用| 无码精品视频一区二区三区| 国产精品视频免费一区二区| 中文字幕人妻丝袜乱一区三区 | 成人无码AV一区二区| 国产无吗一区二区三区在线欢 | 中文字幕一区二区三区有限公司 | 亚洲一区二区三区久久| 无码国产精品一区二区免费vr| 久久一区二区三区99| 国产精品一区二区三区99| 婷婷亚洲综合一区二区| 精品福利视频一区二区三区| 国产午夜精品一区理论片| 精品一区二区三区免费观看| 精品一区二区三区中文| 国产香蕉一区二区精品视频| 无码视频一区二区三区在线观看| 国产视频一区二区在线播放| 无码人妻精品一区二区三| 亚欧色一区W666天堂| 国产在线观看一区精品| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 日本一区二区三区日本免费| 性色av闺蜜一区二区三区| 国产精品美女一区二区三区| 国产一区二区三区无码免费| 一区五十路在线中出| 日本精品少妇一区二区三区| 立川理惠在线播放一区| 一区二区免费国产在线观看|