/* **************************************************************** version 1.0 Created by fan Date 2011-6-30 **************************************************************** */ #include <iostream> #include <cmath> using namespace std; template <typename T> struct TreeNode { T data; TreeNode<T> *left; TreeNode<T> *right; }; template<typename T> void preOrder(TreeNode<T> *pCurrentNode) { if (pCurrentNode==NULL) { return ; } cout<<pCurrentNode->data<<endl; preOrder(pCurrentNode->left); preOrder(pCurrentNode->right); } template<typename T> void inOrder(TreeNode<T> *pCurrentNode) { if (pCurrentNode==NULL) { return ; } inOrder(pCurrentNode->left); cout<<pCurrentNode->data<<endl; inOrder(pCurrentNode->right); } template<typename T> void postOrder(TreeNode<T> *pCurrentNode) { if(pCurrentNode==NULL) { return ; } postOrder(pCurrentNode->left); postOrder(pCurrentNode->right); cout<<pCurrentNode->data<<endl; } void CreateTree1(TreeNode<int> *pHead) { int m; int i; int rNum; cin>>m; TreeNode<int> *currentNode; currentNode=pHead; pHead->left=NULL; pHead->right=NULL; cin>>currentNode->data; for(i=1;i<m;i++) { rNum=rand()%2; if (rNum==0) { TreeNode<int> *leftNode; leftNode=new TreeNode<int>; cin>>leftNode->data; leftNode->left=NULL; leftNode->right=NULL; currentNode->left=leftNode; currentNode=leftNode; } else { TreeNode<int> *rightNode; rightNode=new TreeNode<int>; cin>>rightNode->data; rightNode->right=NULL; rightNode->left=NULL; currentNode->right=rightNode; currentNode=rightNode; } } } int main() { TreeNode<int> *pHead; pHead=new TreeNode<int>; CreateTree1(pHead); preOrder(pHead); inOrder(pHead); postOrder(pHead); return 0; }