Find the largest number in a binary tree
Answers were Sorted based on User's Feedback
Answer / guest
Well..it's not a binary search tree.So we need to traverse
entire binary tree and check with the all node elements and
find the max value.
struct node
{
int data;
struct node *l;
struct node *r;
};
typedef struct node *nd;
int maximum(nd root)
{
static int max;
nd cur = root;
if(cur!=NULL)
{
if(cur->data>max)
max=cur->data;
maximum(root->l);
maximum(root->r);
}
return max;
}
| Is This Answer Correct ? | 13 Yes | 11 No |
Answer / tomás senart
There is a difference between a binary tree and a binary search tree.
A binary tree isn't organized in any sense. The values of it's nodes can be random and have no relationship to each other.
Here is a method for finding the biggest node on a binary tree.
typedef struct node {
int value;
struct tree *right;
struct tree *left;
} Node;
int biggest_node(Node *node)
{
int biggest_left, biggest_right;
biggest_left = node->left ? biggest_node(node->left) : node->value;
biggest_right = node->right ? biggest_node(node->right) : node->value;
if(node->value < biggest_left && node->value < biggest_right)
return biggest_left > biggest_right ? biggest_left : biggest_right;
else if(node->value < biggest_right)
return biggest_right;
else if(node->value < biggest_left)
return biggest_left;
else
return node->value;
}
| Is This Answer Correct ? | 7 Yes | 6 No |
Answer / jiabul sk
int maxOfTree(tree * t)
{
//if tree is empty then it will return -99
if(t==null){return -99;}
else
{
int temp ;
temp=max( maxOfTree(t->left), maxOfTree(t->right));
return( max( t->info , temp ) );
}
}
| Is This Answer Correct ? | 4 Yes | 3 No |
Answer / c++ genie
<code>
struct node
{
int data;
struct node *l;
struct node *r;
};
typedef struct node *nd;
int maximum(nd root)
{
static int max;
nd cur = root;
if(cur!=NULL)
{
int temp = maximum(root->l);
if(temp > max)
max = temp;
int temp2 = maximum(root->r);
if(temp2 > max)
max = temp;
}
return max;
}
</code>
| Is This Answer Correct ? | 2 Yes | 4 No |
Answer / raghuram.a
Well..it's not a binary search tree.So we need to traverse
entire binary tree and check with the all node elements and
find the max value.
struct node
{
int data;
struct node *l;
struct node *r;
};
typedef struct node *nd;
int maximum(nd root)
{
static int max;
nd cur = root;
if(cur!=NULL)
{
if(cur->data>max)
max=cur->data;
maximum(root->l);
maximum(root->r);
}
return max;
}
| Is This Answer Correct ? | 4 Yes | 10 No |
Answer / bharat pandey
The Largest Node in the Binary tree is the Rightmost node
of the tree.
Hence we would traverse the Tree Till The Rightmost child
of the node is traversed.
the code is as follows:
#include<stdio.h>
#include<conio.h>
struct node
{
int data;
struct node *left,*right;
}*tree;
struct node* MAX(struct node* q)
{
struct node* temp;
while(q->right!=NULL)
{
temp=q;
q=q->right;
}
return temp;
}
this algorithm will find the largest element of the tree in
o(log n).
| Is This Answer Correct ? | 6 Yes | 23 No |
what is variable length argument list?
void main() { char ch; for(ch=0;ch<=127;ch++) printf(“%c %d \n“, ch, ch); }
Write a function to find the depth of a binary tree.
13 Answers Adobe, Amazon, EFI, Imagination Technologies,
What is wrong with the following code? int *foo() { int *s = malloc(sizeof(int)100); assert(s != NULL); return s; }
main() { int i, n; char *x = “girl”; n = strlen(x); *x = x[n]; for(i=0; i<n; ++i) { printf(“%s\n”,x); x++; } }
#include<stdio.h> main() { char s[]={'a','b','c','\n','c','\0'}; char *p,*str,*str1; p=&s[3]; str=p; str1=s; printf("%d",++*p + ++*str1-32); }
Ramesh’s basic salary is input through the keyboard. His dearness allowance is 40% of basic salary, and house rent allowance is 20% of basic salary. Write a program to calculate his gross salary.
Is the following code legal? struct a { int x; struct a *b; }
#include<stdio.h> main() { FILE *ptr; char i; ptr=fopen("zzz.c","r"); while((i=fgetch(ptr))!=EOF) printf("%c",i); }
How we print the table of 2 using for loop in c programing?
main() { int i=0; for(;i++;printf("%d",i)) ; printf("%d",i); }
Which one is taking more time and why ? :/home/amaresh/Testing# cat time.c //#include <stdio.h> #define EOF -1 int main() { register int c; while ((c = getchar()) != EOF) { putchar(c); } return 0; } ------------------- WIth stdio.h:- :/home/amaresh/Testing# time ./time_header hi hi hru? hru? real 0 m4.202s user 0 m0.000s sys 0 m0.004s ------------------ Witout stdio.h and with #define EOF -1 =================== /home/amaresh/Testing# time ./time_EOF hi hi hru? hru? real 0 m4.805s user 0 m0.004s sys 0 m0.004s -- From above two case , why 2nd case is taking more time ?