0001 template <typename T> template <typename V> void BinNode<T>::traverse(V& visit) { 0002 Rank method = rand() % 9; //此处暂随机选择,以做测试 0003 printf("traversal method #%d\n", method); 0004 //switch (2) { 0005 switch (method) { 0006 case 0 : inorder(this, visit); break; //中序递归版 0007 case 1 : inorder1(this, visit); break; //中序迭代版#1 0008 case 2 : inorder2(this, visit); break; //中序迭代版#2 0009 case 3 : preorder(this, visit); break; //先序递归版 0010 case 4 : preorder1(this, visit); break; //先序迭代版#1 0011 case 5 : preorder2(this, visit); break; //先序迭代版#2 0012 case 6 : postorder(this, visit); break; //后序递归版 0013 case 7 : postorder1(this, visit); break; //后序迭代版 0014 default : levelorder(this, visit); //层次 0015 } //switch 0016 } //traverse