資源簡介
二叉樹的實現各種遍歷算法,插入刪除成員函數非常全。二叉樹的實現各種遍歷算法,插入刪除成員函數非常全

代碼片段和文件信息
#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
評論
共有 條評論