经典指数          
原因
2020
浏览数
0
收藏数
 

请实现两棵树是否相等的比较,相等返回,否则返回其他值,并说明算法复杂度。 数据结构为: typedef struct_TreeNode{ char c; TreeNode *leftchild; TreeNode *rightchild; }TreeNode; 函数接口为:int CompTree(TreeNode* tree1,TreeNode* tree2); 注:A、B两棵树相等当且仅当Root->c==RootB-->c,而且A和B的左右子树相等或者左右互换相等。

     举报   纠错  
 
切换
1 个答案

int compTree(TreeNode *tree1, TreeNode *tree2)

{

    if(!tree1 && !tree2) return 1;

    if((tree1 && !tree2) ||(!tree1 && tree2)) return 0;

    if(tree1 && tree2) 

    {

        if(tree1->c==tree2->c)

        {    

            if(compTree(tree1->leftChild, tree2->leftChild))

             return compTree(tree1->rightChild, tree2->rightChild);

            else if(compTree(tree1->rightChild, tree2->leftChild))

             return compTree(tree1->leftChild, tree2->rightChild);

        }

    }

    return 0; } 时间复杂度:从代码中可以看出,需要对两棵树都进行遍历,因此时间复杂度是O(N) 空间复杂度:应该是常数级别

 
切换
撰写答案