void destroy( BinTreeNode<Type> *current 二叉树部分成员函数的实现 template<class Type> void Binary Tree<Type>:: destroy( Bin TreeNode< Type>*current)t if current!=NULL)& destroy( current-leftchild )i destroy( current rightChild ); delete current
二叉树部分成员函数的实现 void destroy(BinTreeNode<Type> *current); } template<class Type> void BinaryTree<Type>:: destroy ( BinTreeNode<Type> *current ) { if ( current != NULL ) { destroy ( current→leftChild ); destroy ( current→rightChild ); delete current; } }
Template <class Type> Bin TreeNode<Type> BinaryTree <Type>:: Parent( Bin TreeNode <Type> start, Bin TreeNode <Type>>cuurent)t if start==NULL )return NULL; if( start-→ leftchild curren lart→ rightChild current)return start; Bin TreeNode <Type>p; if((p= Parent( start-leftchilds current ) =NULL) return p; else return Parent( start-right Child, current
Template <class Type> BinTreeNode <Type> *BinaryTree <Type>::Parent ( BinTreeNode <Type> *start, BinTreeNode <Type> *cuurent ) { if ( start == NULL ) return NULL; if ( start→leftChild == current || start→rightChild == current ) return start; BinTreeNode <Type> *p; if ( ( p = Parent ( start→leftChild, current ) ) != NULL ) return p; else return Parent ( start→rightChild, current ); }
Template <class Type> void Binary Tree<Type>:: Traverse( Bin TreeNode <Type>*current ostream &out ) const i if( current =NULL)& 0t< current-→dta<<2; Traverse( current-leftChild, out Traverse( current-rightChild, out )
Template <class Type> void BinaryTree<Type>:: Traverse ( BinTreeNode <Type> *current, ostream &out ) const { if ( current != NULL ) { out << current→data << ‘ ’; Traverse ( current→leftChild, out ); Traverse ( current→rightChild, out ); } }
Template <class Type> istream operator > istream in, BinaryTree <Type>&Tree )( ype item; cout<<构造二叉树:n"; cout<"输入数据(用"≤ee. Revalue< 结束):" in>> item while( item=Tree Revalue) i Tree. Insert( item ) cout<<"输入数据(用"<<ee. Revalue 结束):"; n>> item return in
Template <class Type> istream & operator >> ( istream & in, BinaryTree <Type> &Tree ) { Type item; cout << "构造二叉树:\n "; cout << "输入数据(用 " << Tree.RefValue << "结束): "; in >> item; while ( item != Tree.RefValue ) { Tree.Insert ( item ); cout << "输入数据 (用 " << Tree.RefValue << "结束): "; in >> item; } return in; }
Template <class Type> ostream operator < ostream out, Binary Tree <Type>&Tree )( 0l<<二叉树的前序遍历.ln Tree Traverse( Tree root, out ) out < endl return out
Template <class Type> ostream & operator << ( ostream & out, BinaryTree <Type> &Tree ) { out << “二叉树的前序遍历.\n"; Tree.Traverse ( Tree.root, out ); out << endl; return out; }