资源简介
二叉树的实现各种遍历算法,插入删除成员函数非常全。二叉树的实现各种遍历算法,插入删除成员函数非常全
代码片段和文件信息
#include “BinaryTree.h“
template
BinaryTree::BinaryTree(){
m_root = NULL;
}
template
BinaryTree::BinaryTree(T data){
m_root = new BinaryTreeNode(data);
}
template
BinaryTree::~BinaryTree(){
Destroy(m_root);
m_root = NULL;
}
template
bool BinaryTree::isEmpty() const{
return m_root == NULL ? true : false;
}
template
bool BinaryTree::isLeftChild(BinaryTreeNode *p){
return p == getParent(p)->getLeftChild() ? true : false;
}
template
bool BinaryTree::isRightChild(BinaryTreeNode *p){
return p == getParent(p)->getRightChild() ? true : false;
}
template
BinaryTreeNode* BinaryTree::getRoot(){
return m_root;
}
template
BinaryTreeNode* BinaryTree::getParent(BinaryTreeNode *p){
return Parent(m_root p);
}
template
BinaryTreeNode* BinaryTree::leftChild(BinaryTreeNode *root)const{
return root == NULL ? NULL : root->getLeftChild();
}
template
BinaryTreeNode* BinaryTree::rightChild(BinaryTreeNode *root)const{
return root == NULL ? NULL : root->getRightChild();
}
template
BinaryTreeNode* BinaryTree::leftSibling(BinaryTreeNode *p){
BinaryTreeNode *q;
q = Parent(m_root p);
if (q == NULL || (p == q->getLeftChild()))
return NULL;
return q->getLeftChild();
}
template
BinaryTreeNode* BinaryTree::rightSibling(BinaryTreeNode *p){
BinaryTreeNode *q;
q = Parent(m_root p);
if (q == NULL || (p == q->getRightChild()))
return NULL;
return p->getRightChild();
}
template
T BinaryTree::Retrieve(BinaryTreeNode *p)const{
return p->getData();
}
template
void BinaryTree::Assign(BinaryTreeNode *p const T &d)const{
p->setData(d);
}
template
void BinaryTree::insertLeftChild(BinaryTreeNode *p const T &d)const{
BinaryTreeNode *q = new BinaryTreeNode(d);
q->setLeftChild(p->getLeftChild());
p->setLeftChild(q);
}
template
void BinaryTree::insertRightChild(BinaryTreeNode *p const T &d)const{
BinaryTreeNode *q = new BinaryTreeNode(d);
q->setRightChild(p->getRightChild());
p->setRightChild(q);
}
template
void BinaryTree::Destroy(BinaryTreeNode *p){
if (p){
Destroy(p->getLeftChild());
Destroy(p->getRightChild());
delete p;
}
}
template
BinaryTreeNode* BinaryTree::Parent(BinaryTreeNode *root BinaryTreeNode *p){
BinaryTreeNode *q;
if (root == NULL)
return NULL;
if ((p == root->getLeftChild()) || (p == root->getRightChild()))
return root;
if (q = Parent(root->getLeftChild() p))
return q;
else
return Parent(root->getRightChild() p);
}
///先
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-08-19 13:19 BinaryTreeNode\bin\
目录 0 2018-08-19 21:08 BinaryTreeNode\bin\Debug\
文件 5780 2018-08-19 21:05 BinaryTreeNode\BinaryTree.cpp
文件 2327 2018-08-19 21:07 BinaryTreeNode\BinaryTree.h
文件 1559 2018-08-19 20:34 BinaryTreeNode\BinaryTreeNode.cbp
文件 1091 2018-08-19 16:49 BinaryTreeNode\BinaryTreeNode.cpp
文件 480 2018-08-19 21:07 BinaryTreeNode\BinaryTreeNode.depend
文件 1010 2018-08-19 16:42 BinaryTreeNode\BinaryTreeNode.h
文件 1117 2018-08-19 21:08 BinaryTreeNode\BinaryTreeNode.layout
文件 1036 2018-08-19 21:07 BinaryTreeNode\main.cpp
目录 0 2018-08-19 13:19 BinaryTreeNode\obj\
目录 0 2018-08-19 21:07 BinaryTreeNode\obj\Debug\
文件 20560 2018-08-19 21:07 BinaryTreeNode\obj\Debug\BinaryTree.o
文件 16702 2018-08-19 20:44 BinaryTreeNode\obj\Debug\BinaryTreeNode.o
文件 24360 2018-08-19 21:07 BinaryTreeNode\obj\Debug\main.o
- 上一篇:Jpg转avi命令行工具
- 下一篇:TC打流脚本IPV6
评论
共有 条评论