二叉树cpp的实现
1 #include <iostream> 2 #include <stack> 3 #include <queue> 4 using namespace std; 5 6 typedef int ElemType; 7 typedef struct BiTNode{ 8 ElemType data; 9 struct BiTNode * left; 10 struct BiTNode * right; 11 BiTNode(ElemType data){ 12 this->data = data; 13 this->left = NULL; 14 this->right = NULL; 15 } 16 }BiTNode, *BitTree ; 17 18 void InOrder(BitTree tree){ 19 if(tree!=NULL){ 20 InOrder(tree->left); 21 cout<<tree->data<< " "; 22 InOrder(tree->right); 23 } 24 } 25 26 void LevelOredr(BitTree tree){ 27 queue<BitTree> TreeQueue; 28 TreeQueue.push(tree); 29 while(!TreeQueue.empty()){ 30 BitTree node = TreeQueue.front(); 31 cout<<node->data<< " "; 32 TreeQueue.pop(); 33 if(node->left) 34 TreeQueue.push(node->left); 35 if(node->right) 36 TreeQueue.push(node->right); 37 } 38 cout<<"\n"; 39 } 40 void PreOrder(BitTree tree){ 41 stack<BitTree> TreeStack; 42 while(tree||!TreeStack.empty()){ 43 if(tree){//向左走 44 cout<<tree->data<< " "; 45 TreeStack.push(tree); 46 tree = tree->left; 47 }else{ 48 tree = TreeStack.top()->right; 49 TreeStack.pop(); 50 } 51 } 52 cout<<"\n"; 53 } 54 55 BitTree CreateBitTree(ElemType data){ 56 return new BiTNode(data); 57 } 58 int main() 59 { 60 BitTree tree = CreateBitTree(10); 61 tree->left = CreateBitTree(15); 62 tree->right = CreateBitTree(20); 63 tree->right->left = CreateBitTree(66); 64 PreOrder(tree); 65 LevelOredr(tree); 66 InOrder(tree); 67 return 0; 68 }