正在加载图片...
6-4用嵌套类写出用链表表示的二叉树的类声明。 【解答】 #include <iostream. h> template <class Type> class BinaryTree i template <class Type> class BinTreeNode public: Bin TreeNode<Type>'lefichild,* righIChild; BintreeNode<Type>"root; BinTreeNode<Type>Parent( BinTreeNode<Type>*start, Bin TreeNode<Type>"current ) int Find( BinTreeNode<Type> *current, const Type& item )const void destroy( BinTreeNode<Type>*current ) void Traverse( Bin TreeNode<Type>*current, ostream& out )const; BinaryTree ( root( NULL) BinaryTree( Type value ) Revalue( value ) root(NULL inaryTree(i destroy (roor); 3 BinTreeNode () lefrchild( null), righIChild(NULl)0 BintreeNode ( Type item ) data( item ) lefIChild(null), righ Child(null)i Type& GetData(const( return data: j BinTreeNode<Type>" GetLefi( const( return lefiChild: 3 BintreeNode<Type>* GetRight(const return righIChild; j void SetData( const Type& item i data= item; 3 void SetRight( BinTreeNode<Type>"R RighChild=R;) int ls Empty (i return root==NULL? 1: 0; 3 Bin TreeNode<Type>*Parent( BinTreeNode<Type>*current i return root== NULL I root== current? NULL Parent(root, current );) BinTreeNode<Type>* Lefichild( BintreeNode<Type> *current) return current I= NULL? current->lefi child: NULL ode<Type>* Right Child( Bin TreeNode<Type>*current) return current I= NULL currenr->right Child: NULL int Insert( const Type& item )i BinTreeNode<Type>* Find( const Type& item )i Type>*GetRoot()const( return roof; j friend istream& operator >> istream& in, BinaryTree<Type>& Tree ) 输入二叉树 friend ostream& operator << ostream& out, Binary lree<Type>& Tree ) 输出二叉树} 6-4 用嵌套类写出用链表表示的二叉树的类声明。 【解答】 #include <iostream.h> template <class Type> class BinaryTree { private: template <class Type> class BinTreeNode { public: BinTreeNode<Type> *leftChild, *rightChild; Type data; } Type RefValue; BinTreeNode<Type> * root; BinTreeNode<Type> *Parent ( BinTreeNode<Type> *start, BinTreeNode<Type> *current ); int Insert ( BinTreeNode<Type> *current, const Type& item ); int Find ( BinTreeNode<Type> *current, const Type& item ) const; void destroy ( BinTreeNode<Type> *current); void Traverse ( BinTreeNode<Type> *current, ostream& out ) const; public: BinaryTree ( ) : root( NULL ) { } BinaryTree ( Type value ) : RefValue ( value ), root ( NULL ){ } ~BinaryTree ( ) { destroy (root);} BinTreeNode ( ) : leftChild ( NULL ), rightChild ( NULL ) { } BinTreeNode ( Type item ) : data ( item ), leftChild ( NULL ), rightChild ( NULL ) {} 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 ) { leftChild = L; } void SetRight ( BinTreeNode<Type> *R ){ RightChild =R; } int IsEmpty ( ) { return root == NULL ? 1 : 0; } BinTreeNode<Type> *Parent ( BinTreeNode<Type> *current ) { return root== NULL || root== current ? NULL : Parent ( root, current ); } BinTreeNode<Type> * LeftChild ( BinTreeNode<Type> *current ) { return current != NULL ? current->leftChild : NULL;} BinTreeNode<Type> * RighttChild ( BinTreeNode<Type> *current ) { return current != NULL ? current->rightChild : NULL;} int Insert ( const Type& item ); BinTreeNode<Type> * Find ( const Type& item ); BinTreeNode<Type> * GetRoot ( ) const{ return root; } friend istream& operator >> ( istream& in, BinaryTree<Type>& Tree ); //输入二叉树 friend ostream& operator << ( ostream& out, BinaryTree<Type>& Tree ); //输出二叉树
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有