BinTreeNode( Type item BinTreeNode<Type> xleft= NULL, BinTreeNode<type> *right- NULL ) data(item), leftChild (left), right Child (right)0 Type GetData(const( return data;) BinTreeNode<types GetLeft ( const f return leftchild; i BinTreeNode< type> Getright ()const d return rightchild } void Set Data( const Type& item i data= item;
BinTreeNode ( Type item, BinTreeNode<Type> *left = NULL, BinTreeNode<Type> *right = NULL ) : data (item), leftChild (left), rightChild (right) { } Type GetData ( ) const { return data; } BinTreeNode<Type> * GetLeft ( ) const { return leftChild; } BinTreeNode<Type> * GetRight ( ) const { return rightChild; } void SetData ( const Type& item ) { data = item; }
void SetLeft( BinTreeNode <Type>* L f leftchild =L; j void SetRight( BinTreeNode <Type>*R) f rightChild =R;) template <class Type> class Binary Tree t private BinTreeNode <Type> *root; Type Revalue; void Create BinTree( ifstream& in BinTreeNode<type>*& current )
void SetLeft ( BinTreeNode <Type> * L ) { leftChild = L; } void SetRight ( BinTreeNode <Type> * R ) { rightChild = R; } }; template <class Type> class BinaryTree { private: BinTreeNode <Type> *root; Type RefValue; void CreateBinTree ( ifstream& in, BinTreeNode<Type> * & current );
BinTreeNode<Type>* Parent BinTreeNode<Type>s start BinTreeNode<type> x current ) int Insert( Bin TreeNode< Type>*& current const Type &item ) ∥/插入 void Traverse( BinTreeNode<Type>*current, ostream &out)const /遍历 int Find( BinTreeNode<Type>*current const Type &item)const\ ∥搜索 void destroy( BinTreeNode<type>* current ) /删除
BinTreeNode<Type> * Parent ( BinTreeNode<Type> * start, BinTreeNode<Type> * current ); int Insert ( BinTreeNode<Type> * & current, const Type &item ); //插入 void Traverse ( BinTreeNode<Type> *current, ostream &out ) const //遍历 int Find ( BinTreeNode<Type> *current, const Type &item ) const //搜索 void destroy ( BinTreeNode<Type> * current ); //删除
publica virtual Binary Tree(): root(NULL) virtual Binary Tree( Type value ): Refvalue(value), root (NULL)& virtual-Binary(i destroy(root);) virtual int IsEmpty () /判树空否 f return root- NULL ?1: 0; virtual BinTreeNode <Type>* Parent( BinTreeNode <Type> *current f return root== NULL root=- current? NULL Parent( root, current ; ∥/ current结点的双亲
public: virtual BinaryTree ( ) : root (NULL) { } virtual BinaryTree ( Type value ) : RefValue (value), root (NULL) { } virtual ~BinaryTree ( ) { destroy ( root ); } virtual int IsEmpty ( ) //判树空否 { return root == NULL ? 1 : 0; } virtual BinTreeNode <Type> * Parent ( BinTreeNode <Type> *current ) { return root == NULL || root == current? NULL : Parent ( root, current ); } //找current结点的双亲
virtual BinTreeNode<Type>* Leftchild BinTreeNodextype> *current 取 current结点的左子女 i return root!=NULL current->left Child NULL virtual Bin TreeNode<Type>* RightChild Bin TreeNode<Type>*current 取 current结点的右子女 f return root!= nULL current->rightChild NULL; 3 virtual int Insert( const Type& item);
virtual BinTreeNode<Type> * LeftChild ( BinTreeNode<Type> *current ) //取current结点的左子女 { return root != NULL ? current->leftChild : NULL; } virtual BinTreeNode<Type> * RightChild ( BinTreeNode<Type> *current ) //取current结点的右子女 { return root != NULL ? current->rightChild : NULL; } virtual int Insert ( const Type& item);