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<Type>* getLeft() const f return left Child;) 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 BinaryTree private BinTreeNode <Type> *root; Type Revalue; void Create Tree( 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>x start BinTreeNode<type> x current ) int Insert( BinTreeNode<Type>*& current const Type &item ) ∥/插入 void Traverse( BinTreeNode<Type>current ostream &out)const /遍历 int Find( Bin TreeNode<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-BinaryTree(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 );3 ∥/ 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);