Question: ***NEED IN C LANGUAGE*** #include #include struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; }; struct TreeNode * createTreeNode(int val); void destroyTreeNode(struct

 ***NEED IN C LANGUAGE*** #include #include struct TreeNode { int val;

***NEED IN C LANGUAGE*** #include  #include  struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; }; struct TreeNode * createTreeNode(int val); void destroyTreeNode(struct TreeNode * node); void displayTreeNode(struct TreeNode * node); struct TreeNode * buildTree(); void displayInorder(struct TreeNode * root); void displayPreorder(struct TreeNode * root); int levelsum(struct TreeNode * root, int level); void main() { struct TreeNode * root = buildTree(); printf("Inorder: "); displayInorder(root); printf(" "); printf("Preorder: "); displayPreorder(root); printf(" "); printf("Level %d: =%d ", 0, levelsum(root, 0)); printf("Level %d: =%d ", 1, levelsum(root, 1)); printf("Level %d: =%d ", 2, levelsum(root, 2)); printf("Level %d: =%d ", 3, levelsum(root, 3)); } /* * The following function doesn't work, so your task is to * make it work */ int levelsum(struct TreeNode * root, int level) { return 0; } struct TreeNode * createTreeNode(int val) { struct TreeNode * node = (struct TreeNode *) malloc(sizeof(struct TreeNode)); node->val = val; node->left = NULL; node->right = NULL; return node; } void destroyTreeNode(struct TreeNode * node) { free(node); } void displayTreeNode(struct TreeNode * node) { printf("%d", node->val); } struct TreeNode * buildTree() { struct TreeNode *p0 = createTreeNode(0); struct TreeNode *p1 = createTreeNode(1); struct TreeNode *p2 = createTreeNode(2); struct TreeNode *p3 = createTreeNode(3); struct TreeNode *p4 = createTreeNode(4); struct TreeNode *p5 = createTreeNode(5); struct TreeNode *p6 = createTreeNode(6); struct TreeNode *p7 = createTreeNode(7); struct TreeNode *p8 = createTreeNode(8); p3->left = p5; p3->right = p1; p5->left = p6; p5->right = p2; p2->left = p7; p2->right = p4; p1->left = p0; p1->right = p8; return p3; } void displayInorder(struct TreeNode * root) { if (root == NULL) return; displayInorder(root->left); displayTreeNode(root); printf(" "); displayInorder(root->right); } void displayPreorder(struct TreeNode * root) { if (root == NULL) return; displayTreeNode(root); printf(" "); displayPreorder(root->left); displayPreorder(root->right); } 

Problem 2 [1 pt]. Given a binary tree, sum the values in nodes at the same 'level', where a level of a node is the distance from the node to the root. For example, the root is at level 0 , and its children are at level 1 . In the example below, the sum at level 0 is 3 ; the sum at level 1 is 6 ; the sum at level 2 is 16 ; and the sum at level 3 is 11 . Attached is a program 'levelsum.c' which has a function int levelsum(struct TreeNode * root, int level); which returns the sum at level 'level' for the tree 'root'. The main() program will display the sum. Note that the tree that is built in the program is shown in the figure above. The current version of 'levelsum( )' doesn't work, so make it work by only modifying 'levelsum( )

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!