/* function associated with clicker question 1 */ void clickerQuestion1() { TreeNodePtr rootPtr = NULL; rootPtr = createNewTreeNode(42); rootPtr->leftPtr = createNewTreeNode(3); rootPtr->rightPtr = createNewTreeNode(43); rootPtr->rightPtr->leftPtr = createNewTreeNode(1); rootPtr->rightPtr->rightPtr = createNewTreeNode(4); /* printf("tree:\n"); printTree(rootPtr,0); printf("post order traversal:\n"); postOrderPrint(rootPtr); printf("\n"); printf("arithmetic expression tree:\n"); printTreeAsArithmeticExpression(rootPtr, 0); printf("postfix notation:\n"); postOrderArithmeticExpressionPrint(rootPtr); printf("\n"); printf("Result of evaluating arithmetic expression: %g\n", optionalComputeResultOfArithmeticExpressionTree(rootPtr)); */ }
/* Given a pointer to a pointer to a binary search tree and desired node value, this function will create/insert a node with the given value in the proper position. If the node value is a duplicate, it will NOT be inserted in the tree. */ void insertBinarySearchTreeNode(TreeNodePtr *rootPtr, int newNodeData) { if (*rootPtr == NULL) /* base case */ { *rootPtr = createNewTreeNode(newNodeData); } else { if (newNodeData < (*rootPtr)->data) /* insert in left subtree */ { insertBinarySearchTreeNode(&((*rootPtr)->leftPtr), newNodeData); } else if (newNodeData > (*rootPtr)->data) /* insert in right subtree */ { insertBinarySearchTreeNode(&((*rootPtr)->rightPtr), newNodeData); } } }
/* Given a pointer to a pointer to a binary tree and desired node value, this function will create/insert a node with the given value in a random leaf position in the tree. */ void insertTreeNodeRandomly(TreeNodePtr *rootPtr, int newNodeData) { if (*rootPtr == NULL) /* base case */ { *rootPtr = createNewTreeNode(newNodeData); } else { if (rand() % 2 == 0) { insertTreeNodeRandomly(&((*rootPtr)->rightPtr), newNodeData); } else { insertTreeNodeRandomly(&((*rootPtr)->leftPtr), newNodeData); } } }
int main() { int op = 0; int exit = 0; myTreeNode * myTree = NULL; while(!exit) { printf("Enter the option\n"); printf("1.Craete Tree\n"); printf("2.Print Tree\n"); printf("3.Size of Tree\n"); printf("4.Height of Tree\n"); printf("0.Exit\n"); scanf("%d",&op); switch(op) { case 0: exit = 1; break; case 1: myTree = (myTreeNode*)createNewTreeNode(1); myTree->left = (myTreeNode*)createNewTreeNode(2); myTree->right = (myTreeNode*)createNewTreeNode(3); myTree->left->left = (myTreeNode*)createNewTreeNode(4); myTree->left->right = (myTreeNode*)createNewTreeNode(5); myTree->right->left = (myTreeNode*)createNewTreeNode(6); myTree->right->right = (myTreeNode*)createNewTreeNode(7); break; case 2: printTree(myTree); break; case 3: printf("Tree Size = %d\n",getTreeSize(myTree)); break; case 4: printf("Tree Height = %d\n",getTreeHeight(myTree)); break; case 5: break; case 6: break; case 7: break; case 8: break; default: printf("Invalid Option\n"); break; } } return 0; }