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
- C++ 重载==,使用栈的非递归算法
- 关于二叉树非递归算法使用的栈问题
- 使用栈实现快速算法的非递归实现
- 整数划分的非递归算法(C语言)
- 二叉树的遍历(c语言非递归算法)
- 用栈实现Fibnacci递归过程的非递归算法
- 快速排序的递归函数算法使用栈转换为非递归算法后反而速度变慢了呢?
- C/C++面试之算法系列--菲波拉契数列的递归与非递归算法
- 遍历二叉树的递归算法与非递归算法以及C语言实现
- C/C++面试之算法系列--菲波拉契数列的递归与非递归算法
- C递归算法与栈的分析,非完全二叉树遍历分析---ShinePans
- 快速排序算法的递归与非递归实现(C/C++)
- 二叉排序树节点的删除(C++,算法导论),前中后序遍历(递归/非递归,栈实现),按层次遍历(队列实现)
- 快速排序的非递归算法(使用队列)
- 如何使用非递归算法实现二叉排序树的建立
- 迷宫的非递归算法
- 汉诺塔的非递归算法
- 汉诺塔的非递归算法
- HTML5表单属性
- Contains Duplicate II
- RabbitMQ Exchange 模式 - topic
- js异步加载的三种方案
- iOS开发Xcode6及以上版本中使用PDF格式矢量图标资源
- C++ 重载==,使用栈的非递归算法
- PHP中获取类、方法、属性
- 链表 LinkedList 问题的总结
- 【杭电oj】2099 - 整除的尾数(枚举)
- POJ3253 Fence Repair 贪心法 哈夫曼树
- Xcode常用快捷键
- iOS 持续集成- 使用xctool实现自动化打包
- Windows程序安装包制作——Qt Installer Framework
- 解决C# WinForm 中 VSHOST.EXE 程序不关闭的问题