fork(3) download
  1. #include<iostream>
  2. #include<cstdlib>
  3. using namespace std;
  4. typedef struct node
  5. {
  6. struct node* left;
  7. long value;
  8. struct node* right;
  9. }tnode;
  10. tnode* insertnode(long,tnode*);
  11. tnode* createnode(long);
  12. int height(tnode*);
  13. void preorder(tnode*);
  14. int main()
  15. {
  16. int n,i;
  17. cin>>n;
  18. long input[n];
  19. for(i=0;i<n;i++)
  20. {
  21. cin>>input[i];
  22. }
  23. tnode *root=(tnode*)malloc(sizeof(tnode));
  24. root=NULL;
  25. //cout<<"HI"<<endl;
  26. root=insertnode(input[0],root);
  27. for(i=1;i<n;i++)
  28. {
  29. insertnode(input[i],root);
  30. }
  31. //preorder(root);
  32. cout<<height(root)<<endl;
  33. return 0;
  34. }
  35. tnode* insertnode(long value,tnode* node)
  36. {
  37. if(node==NULL)
  38. {
  39. return createnode(value);
  40. }
  41. else if(value<node->value)
  42. {
  43. node->left=insertnode(value,node->left);
  44. }
  45. else if(value>node->value)
  46. {
  47. node->right=insertnode(value,node->right);
  48. }
  49. }
  50. tnode* createnode(long value)
  51. {
  52. tnode* temp=(tnode*)malloc(sizeof(tnode));
  53. temp->value=value;
  54. temp->left=temp->right=NULL;
  55. return temp;
  56. }
  57. int height(tnode* node)
  58. {
  59. int lht,rht;
  60. if(node==NULL)
  61. {
  62. return 0;
  63. }
  64. else
  65. {
  66. lht=height(node->left);
  67. rht=height(node->right);
  68. if(lht>=rht)
  69. {
  70. return lht+1;
  71. }
  72. else
  73. {
  74. return rht+1;
  75. }
  76. }
  77. }
  78. void preorder(tnode* temp)
  79. {
  80. if(temp!=NULL)
  81. {
  82. cout<<temp->value<<" ";
  83. preorder(temp->left);
  84. preorder(temp->right);
  85. }
  86. }
Success #stdin #stdout 0s 16064KB
stdin
4
2 1 3 4
stdout
2