⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bitree_class.h

📁 二叉树的设计。包含二叉树结点类的设计以及二叉树的遍历。
💻 H
字号:
#include "BiTree.h"
template <class T>
class BiTree_class:public BiTreeNode<T>
{
    private:
        BiTreeNode<T>*root;
        BiTreeNode<T>*current;
    public:
        BiTree_class(   )
        {
            root=current=NULL;
        }
        void SetUP_BiTree( BiTreeNode<T>* &root);
        void Set(   );
        void Delete_BiTree(BiTreeNode<T> *&s  );
        void PreOrderTree(BiTreeNode<T>*&t);
        void InOrderTree(BiTreeNode<T>*&t);
        void PostOrderTree(BiTreeNode<T>*&t);
        int Depth(BiTreeNode<T>*&root);
        BiTreeNode<T>*&Root( )
        {
            return root;
        }
        ~BiTree_class(  )
        {
        }
};
template<class T>
void BiTree_class<T>::SetUP_BiTree(BiTreeNode<T>*&root)
{
    T data1,data2;
    cout<<root->data<<" 's leftChild(if it has not the child input 0) :";
    cin>>data1;
	if(data1!=0)
	{
    root->Left()=new BiTreeNode<T>(data1,NULL,NULL);
	SetUP_BiTree( root->Left());
	}
    cout<<root->data<<" 's rightChild(if it has not the child input 0) :";
    cin>>data2;
    if(data2!=0)
	{
		root->Right()=new BiTreeNode<T>(data2,NULL,NULL);
        SetUP_BiTree(root->Right());
	}
}
template<class T>
void BiTree_class<T>::Set( )
{
    T data;
    cout<<"the root:";
    cin>>data;

    
	if(data!=0)
	{
		BiTreeNode<T> *p=new BiTreeNode<T>(data,NULL,NULL);
        root=p;
        SetUP_BiTree(root);
	}
}

template<class T>
void Delete_BiTree( BiTreeNode<T> *&s )
{
    if(s==NULL)
    return ;
    BiTreeNode<T>*q=s->leftChild,*p;
    while(q!=NULL)
    {
        p=q->rightChild;
        Delete_BiTree(q);
        q=p;
    }
    cout<<s->data<<" ";
    delete s;
}
template<class T>
void BiTree_class<T>::PreOrderTree(BiTreeNode<T>*&t)
{
    if(t!=NULL)
    {
        cout<<t->data<<" ";
        PreOrderTree( t->Left());
        PreOrderTree( t->Right());
    }
}
template<class T>
void BiTree_class<T>::InOrderTree(BiTreeNode<T>*&t)
{
    if(t!=NULL)
    {
        InOrderTree( t->Left());
        cout<<t->data<<" ";
        InOrderTree( t->Right());
    }
    
}
template<class T>
void BiTree_class<T>::PostOrderTree(BiTreeNode<T>*&t)
{
    if(t!=NULL)
    {
        PostOrderTree( t->Left());
        PostOrderTree(t->Right());
        cout<<t->data<<" ";
    }
}

template<class T>
int BiTree_class<T>::Depth(BiTreeNode<T>*&root)
{
    int depthleft,depthright,depth_all;
    if(root==NULL)
        depth_all=-1;
    else
    {
        depthleft=Depth( root->Left());
        depthright=Depth( root->Right());
        
        depth_all=1+(depthleft>depthright?depthleft:depthright);
    }
    return depth_all;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -