判断两棵二叉树是否相等

来源:互联网 发布:同ip域名查询 编辑:程序博客网 时间:2024/05/03 03:44
  • 题目要求:请实现两棵二叉树树是否相等的比较,并说明算法复杂度。

定义数据结构:

struct BinaryTreeNode{    int value;    BinaryTreeNode* left;    BinaryTreeNode* right;};

解题思路:

A、B两棵树相等当且仅当pRoot1->value==pRoot2–>value,而且pRoot1和pRoot2的左右子树相等或者左右互换相等。

实现代码:

bool CompareTree(BinaryTreeNode *pRoot1,BinaryTreeNode *pRoot2){    if (pRoot1 == NULL && pRoot2 == NULL)    {        return true;    }    if (pRoot1 != NULL && pRoot2 != NULL)    {        if (pRoot1->value == pRoot2->value)        {            //注意pRoot1和pRoot2左右子树相等或者左右互换相等的情况            if (CompareTree(pRoot1->left,pRoot2->left) && CompareTree(pRoot1->right,pRoot2->right)                || CompareTree(pRoot1->right,pRoot2->left) && CompareTree(pRoot1->left,pRoot2->right))            {                return true;            }        }    }    return false;}

注意递归结束的判断。

0 0
原创粉丝点击