void get_vertical_sum(struct treenode *root, struct listnode *node) { if(root) { node->sum += root->data; if(node->prev == NULL) { node->prev = getlistnode(); node->prev->next = node; } get_vertical_sum(root->left, node->prev); if(node->next== NULL) { node->next = getlistnode(); node->next->prev = node; } get_vertical_sum(root->right, node->next); } }
void main() { struct treenode *root = getnode(5); root->left = getnode(4); root->left->left = getnode(3); root->left->right= getnode(8); root->right= getnode(7); root->right->left = getnode(6); root->right->right= getnode(9); struct listnode *node = getlistnode(); get_vertical_sum(root, node); printsum(node); }
struct treenode * make_tree() { int index; struct treenode * root, *cur; cur = root = NULL; struct listnode *cur_child; if(root == NULL) { cur = root = get_treenode(i); } cur_child = cur->child_list; int children; children = cur->info.reports; while(children > 0) { getlistnode(index++); children--; } }
void insertedge(node* start,char A,char B) { if(start==NULL) { printf("\nNo nodes in the graph"); return; } node* locA=NULL; findnode(start,A,&locA); node* locB=NULL; findnode(start,B,&locB); if(locA==NULL || locB==NULL) { printf("\nNodes not present in graph!!!"); return; } listnode* temp=NULL; getlistnode(locB,&temp); temp->next=locA->adj; locA->adj=temp; }