/****************************************************************
  *   函数名称:lessOrderPrintTree()
  *   功能描述: 按照从小到大的顺序输出该树结点
  *   参数列表: 无
  *   返回结果:无
  *****************************************************************/
  template<typename Comparable>
  void AvlTree<Comparable>::lessOrderPrintTree(AvlNode * t)
  {
  if(t != NULL){
  lessOrderPrintTree(t->left);
  cout << t->element << " ";
  lessOrderPrintTree(t->right);
  }
  }
  /****************************************************************
  *   函数名称:makeEmpty()
  *   功能描述: 将该AVL平衡树清空
  *   参数列表: 无
  *   返回结果:无
  *****************************************************************/
  template<typename Comparable>
  void AvlTree<Comparable>::makeEmpty()
  {
  makeEmpty(root);
  }
  /****************************************************************
  *   函数名称:makeEmpty(struct AvlNode * t)
  *   功能描述: 释放t指针指向的结点
  *   参数列表: t 当前结点的指针
  *   返回结果:无
  *****************************************************************/
  template<typename Comparable>
  void AvlTree<Comparable>::makeEmpty(AvlNode * t)
  {
  if(t != NULL){
  makeEmpty(t->left);
  makeEmpty(t->right);
  delete t;
  }
  }
  /****************************************************************
  *   函数名称:isEmpty()
  *   功能描述: 判断该树是否为空
  *   参数列表: 无
  *   返回结果:如果为空则返回true;否则返回false;
  *****************************************************************/
  template<typename Comparable>
  bool AvlTree<Comparable>::isEmpty() const
  {
  return (root == NULL) ? true : false;
  }
  //测试主函数
  int main()
  {
  vector<int> v;
  AvlTree<int> tree;
  for(int i = 0; i < 10; i++)
  v.push_back(rand() % 10);
  cout << "v: ";
  for(int i = 0; i < 10; ++i)
  cout << v[i] << " ";
  cout << endl;
  cout << "构造AVL树trre1: " << endl;
  for(int i = 0; i < 10; ++i)
  tree.insert(v[i]);
  tree.insert(13);
  tree.insert(12);
  tree.insert(11);
  tree.lessOrderPrintTree();       
  tree.biggerOrderPrintTree();
  AvlTree<int> tree2;
  cout << "构造AVL树trre2: " << endl;
  for(int i = 1; i < 8; ++i)
  tree2.insert(i);
  tree2.insert(16);
  tree2.insert(15);
  tree2.lessOrderPrintTree();
  tree2.biggerOrderPrintTree();
  int min = tree2.findMin();
  cout << "min = " << min << endl;
  int max = tree2.findMax();
  cout << "max = " << max << endl;
  return 0;
  }