二叉树——C++实现
来源:互联网 发布:软件研发管理体系 编辑:程序博客网 时间:2024/06/05 07:01
#include<iostream>
#include<queue>
using namespace std;
template<class T> class BinaryTree;
template<class T>
class TreeNode
{
public:
TreeNode()
{
leftChild = NULL;
rightChild = NULL;
}
T data;
TreeNode<T> *leftChild;
TreeNode<T> *rightChild;
};
template<class T>
class BinaryTree
{
public:
void LevelOrder();
void Visit(TreeNode<T>* currentNode);
public:
TreeNode<T> *root;
};
template<class T>
void BinaryTree<T>::Visit(TreeNode<T>* currentNode)
{
std::cout<<currentNode->data<<endl;
}
template<class T>
void BinaryTree<T>::LevelOrder()
{
std::queue<TreeNode<T>*> q;
TreeNode<T>* currentNode = root;
while(currentNode)
{
Visit(currentNode);
if(currentNode->leftChild) q.push(currentNode->leftChild);
if(currentNode->rightChild) q.push(currentNode->rightChild);
if(q.empty()) return;
currentNode = q.front();
q.pop();
}
}
int main()
{
BinaryTree<char> tree;
TreeNode<char> plus,decrese,mul,divide,a,b,c,d,e;
plus.data = '+';
decrese.data = '-';
mul.data = '*';
divide.data = '/';
a.data = 'A';
b.data = 'B';
c.data = 'C';
d.data = 'D';
e.data = 'E';
tree.root = +
plus.leftChild = &decrese;
plus.rightChild = &e;
decrese.leftChild = &mul;
decrese.rightChild = &d;
mul.leftChild = ÷
mul.rightChild = &c;
divide.leftChild = &a;
divide.rightChild = &b;
tree.LevelOrder();
return 0;
}
#include<queue>
using namespace std;
template<class T> class BinaryTree;
template<class T>
class TreeNode
{
public:
TreeNode()
{
leftChild = NULL;
rightChild = NULL;
}
T data;
TreeNode<T> *leftChild;
TreeNode<T> *rightChild;
};
template<class T>
class BinaryTree
{
public:
void LevelOrder();
void Visit(TreeNode<T>* currentNode);
public:
TreeNode<T> *root;
};
template<class T>
void BinaryTree<T>::Visit(TreeNode<T>* currentNode)
{
std::cout<<currentNode->data<<endl;
}
template<class T>
void BinaryTree<T>::LevelOrder()
{
std::queue<TreeNode<T>*> q;
TreeNode<T>* currentNode = root;
while(currentNode)
{
Visit(currentNode);
if(currentNode->leftChild) q.push(currentNode->leftChild);
if(currentNode->rightChild) q.push(currentNode->rightChild);
if(q.empty()) return;
currentNode = q.front();
q.pop();
}
}
int main()
{
BinaryTree<char> tree;
TreeNode<char> plus,decrese,mul,divide,a,b,c,d,e;
plus.data = '+';
decrese.data = '-';
mul.data = '*';
divide.data = '/';
a.data = 'A';
b.data = 'B';
c.data = 'C';
d.data = 'D';
e.data = 'E';
tree.root = +
plus.leftChild = &decrese;
plus.rightChild = &e;
decrese.leftChild = &mul;
decrese.rightChild = &d;
mul.leftChild = ÷
mul.rightChild = &c;
divide.leftChild = &a;
divide.rightChild = &b;
tree.LevelOrder();
return 0;
}
0 0
- 二叉树 c实现
- 二叉树 C实现
- 二叉树 c 实现
- 数据结构C语言实现系列[7]——二叉树
- 数据结构C语言实现系列——二叉树
- 数据结构C语言实现系列——二叉树[转]
- 数据结构C语言实现系列——二叉树
- C语言实现系列——二叉树
- 数据结构——二叉查找树的详细实现(c++)
- 数据结构—二叉树(C语言实现)
- 【二叉查找树】c实现
- 用c实现二叉树
- C语言实现二叉树
- 用c实现二叉树
- 二叉树递归C实现
- C语言实现二叉树
- C语言实现二叉树
- [C++] 实现二叉搜索树
- Android 2016新技术
- Java对于静态的理解
- 限制程序中某类操作的执行次数的算法设计及C代码实现
- Android sdk自带的9patch工具(9妹)
- 保存博客
- 二叉树——C++实现
- Prime Land
- tencent-wechat/phxsql
- 排序算法:快速排序
- PointToPointNetDevice doesn't support TapBridgeHelper
- 自定义按钮--Selector
- ==与equal的区别
- POJ 2231 Moo Volume【求和】
- 自定义控件 ——可拖动测量尺子