C++ 重载==,使用栈的非递归算法

来源:互联网 发布:suse linux 安装软件 编辑:程序博客网 时间:2024/06/06 17:35

  题目

成员函数,使用栈的非递归算法,其他成员函数(构造或遍历)采用递归算法

6-12 bool operator==(BinaryTree<T> &bitree)//重载==,比较两棵二叉树是否相等


实验原始纪录

template <class T>

bool BinaryTree<T>::operator==(BinaryTree<T> &bitree)//重载==,比较两棵二叉树是否相等

{

LinkedStack<BinaryNode<T>*> a;

BinaryNode<T> *p = this->root;

LinkedStack<BinaryNode<T>*> b;

BinaryNode<T> *q = bitree.root;


while( p != NULL  ||  q != NULL || !a.empty() || !b.empty() )

{

if( p != NULL && q != NULL )

{

if( p->data != q->data )

return false;

a.push(p);

b.push(q);

p = p->left;

q = q->left;

}

else 

{

if( p == NULL && q == NULL )

{

      p=a.pop();

q=b.pop();

p=p->right;

q=q->right;

}

else

return false;

}

}

return true;

}



一个在努力中的未来程序员,如果有更好的算法,欢迎评论。


0 0
原创粉丝点击