binarytree.h

来自「二叉树算法,如何构造二叉树以及对二叉树的操作」· C头文件 代码 · 共 75 行

H
75
字号
#include <iostream.h>
template <class T>
#define struct BTNOde
{       BTNode(){lChild=rChild=Null;}
        BTNode(const T &x){element=x;lChild=rChild=Null;}
        BTNode(const T &x,BNode<T> *l,BNode<T> *r){element=x;lChild=l;rChild=r;}
		T element;
		BTNode<T> *lChild,*rChild;
}
template <class T>
class BinaryTree
{public:
BinaryTree(){root=null;}  
~BinaryTree();
bool Isempty()const;
void Clear();
bool Root(T &x)const;
void MakeTree(const T &x,BinaryTree<T> &left,BinaryTree<T> &right);
void BreakTree(const T &x,BinaryTree<T> &left,BinaryTree<T> &right);
void PreOrder(BTNode<T> *p);
void InOrder(BTNode<T> *p);
void PostOrder(BTNode<T> *p);
protected:
	 BTNode<T> *root;

};

template <class T>
void BinaryTree<T>::MakeTree(const T &x,BinaryTree<T> &left,BinaryTree<T> &right)
{
if(root||&left=&right) return ;
root=new BTNode<T>(x,left.root,right.root);
left.root,right.root=null;
}

template <class T>
void BinaryTree<T>::BreakTree(const T &x,BinaryTree<T> &left,BinaryTree<T> &right)


template <class T>
void BinaryTree<T>::PreOrder(BTNode<T> *p)
{ 
     if(p != NULL) 
     {   cout << p->element << endl;
         PreOrder(p->left);  
         PreOrder(p->right); 
     } 
     return 0;      
}

template <class T>
void BinaryTree<T>::InOrder(BTNode<T> *p)
{if(p != NULL) 
     { 
        InOrder(p->left);  
          cout << p->element << endl;           
        InOrder(p->right); 
     } 
     return 0;      
}



template <class T>
void BinaryTree<T>::PostOrder(BTNode<T> *p)
{ 
     if(p != NULL) 
     { 
        PostOrder(p->left); 
        cout << p->element << endl;           
        PostOrder(p->right); 
     } 
     return 0;      
} 

⌨️ 快捷键说明

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