首页 > 试题广场 >

相同的二叉树

[编程题]相同的二叉树
  • 热度指数:1313 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定两个根结点分别为 root1root2 二叉树,请判断这两棵树是否完全相同。
数据范围:

两棵树上的节点数目都在范围 [0, 100] 内


示例1

输入

{1,2,1},{1,#,2}

输出

false

说明



两个树在结构上不相同,故它们是不相同的。
示例2

输入

{1,2,1},{1,2,1}

输出

true

说明

两个树在结构上相同,并且节点具有相同的值,故认为它们是相同的。

说明:本题目包含复杂数据结构TreeNode,点此查看相关信息
/**
 * struct TreeNode {
 *  int val;
 *  struct TreeNode *left;
 *  struct TreeNode *right;
 * };
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param root1 TreeNode类
 * @param root2 TreeNode类
 * @return bool布尔型
 */
bool preorder(struct TreeNode* root1, struct TreeNode* root2) {
    //static int count = 0;
    if (NULL != root1 && NULL != root2) {
        if (root1->val != root2->val)
            return false;
        return preorder(root1->left, root2->left)&&preorder(root1->right, root2->right) ;
        // preorder(root1->left, root2->left);
        // preorder(root1->right, root2->right);
    }
    if (NULL != root1 && NULL == root2)
        return false;
    if (NULL == root1 && NULL != root2)
        return false;
    return true;
}
bool isSameTree(struct TreeNode* root1, struct TreeNode* root2 ) {
    // write code here
    // if(!root1 && !root2)
    //     return true;
    // if(!root1 || !root2)
    //     return false;
    // if(root1->val!=root2->val)
    //     return false;
    // return isSameTree(root1->left,root2->left)&&isSameTree(root1->right,root2->right);
    return preorder(root1, root2);
}

发表于 2023-01-10 17:21:15 回复(0)