글
BST (Binary Search Tree)
전전컴/C++
2013. 11. 3. 15:33
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | #include <iostream> #include <string> using namespace std; typedef struct tTreeNode{ struct tTreeNode *left, *right; int data; }TreeNode; TreeNode* createNode(TreeNode* left, int root, TreeNode* right){ TreeNode *p = (TreeNode*)malloc(sizeof(TreeNode)); p->left = left; p->right = right; p->data = root; return p; } void destroyTree(TreeNode* p){ if( p == NULL) return; destroyTree(p->left); destroyTree(p->right); cout<<"node remove"<<endl; free(p); } void preorder(TreeNode* root){ if(root == NULL) return; cout<<root->data; preorder(root->left); preorder(root->right); } void postorder(TreeNode* root){ if(root == NULL) return; postorder(root->left); postorder(root->right); cout<<root->data; } void inorder(TreeNode* root){ if(root == NULL ) return; inorder(root->left); cout<<root->data; inorder(root->right); } void insertNode(TreeNode* root, int item){ } TreeNode* addTree(TreeNode* root, TreeNode* NewNode){ if( root == NULL) return NewNode; if( root->data > NewNode->data ){ root->left = addTree(root->left, NewNode); }else{//root->data < newNode->data; root->right = addTree(root->right , NewNode); } return root; } void main(){ TreeNode* root = createNode(NULL,7,NULL); TreeNode* NewNode = createNode(NULL, 5, NULL); TreeNode* NewNode2 = createNode(NULL,3,NULL); TreeNode* NewNode3 = createNode(NULL,8,NULL); TreeNode* NewNode4 = createNode(NULL,10,NULL); root = addTree(root ,NewNode); root = addTree(root ,NewNode2); root = addTree(root ,NewNode3); root = addTree(root ,NewNode4); cout<<"inorder"; inorder(root); cout<<endl; cout<<"preorder"; preorder(root); cout<<endl; destroyTree(root); } |