• 大小: 30KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-13
  • 语言: 其他
  • 标签: shujujiegou  

资源简介

二叉树的实现各种遍历算法,插入删除成员函数非常全。二叉树的实现各种遍历算法,插入删除成员函数非常全

资源截图

代码片段和文件信息

#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

评论

共有 条评论

相关资源