m2skills

deepest leaf cpp

May 15th, 2018
30
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.96 KB | None | 0 0
  1. // Program to print the deepest leaf node in the binary tree using inorder traversal
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. // node class
  7. class node{
  8. public:
  9.     int data;
  10.     int hd;
  11.     node* left;
  12.     node* right;
  13. };
  14.  
  15. // function that returns a pointer to new node
  16. node* createNode(int element){
  17.     node* temp = (node*) malloc(sizeof(node));
  18.     temp->data = element;
  19.     temp->hd = -1;
  20.     temp->left = NULL;
  21.     temp->right = NULL;
  22.     return temp;
  23. }
  24.  
  25. // function to print the deepest leaf node in the binary tree using inorder traversal
  26. void deepest_level_leaf_node(node* root, int *max_level, int *answer, int level = 0){
  27.     // if the tree is empty or if we reach a leaf node then return 0
  28.     if (root == NULL){
  29.         return;
  30.     }
  31.     // check in the left subtree for the element
  32.     // if found then return the level
  33.     deepest_level_leaf_node(root->left, max_level, answer, level + 1);
  34.     if(root->left == NULL && root->right == NULL && *max_level < level){
  35.         *max_level = max(*max_level, level);
  36.         *answer = root->data;
  37.     }
  38.     deepest_level_leaf_node(root->right, max_level, answer, level + 1);
  39. }
  40.  
  41. int main() {
  42.  
  43.     node* head = createNode(1);
  44.     head->left = createNode(2);
  45.     head->right = createNode(3);
  46.     head->left->left = createNode(4);
  47.     head->left->right = createNode(5);
  48.     head->right->right = createNode(6);
  49.     head->left->left->right = createNode(7);
  50.     head->right->right->left = createNode(8);
  51.     head->left->left->right->left = createNode(9);
  52.     head->left->left->right->left->left = createNode(10);
  53.     head->right->right->left->right = createNode(11);
  54.     int max_level = INT8_MIN;
  55.     int deepest_leaf = INT8_MIN;
  56.     deepest_level_leaf_node(head, &max_level, &deepest_leaf);
  57.     cout<<"Deepest Level leaf node in the above binary tree is : "<<deepest_leaf<<endl;
  58.  
  59. }
  60.  
  61.  
  62.  
  63. /*
  64.  
  65. Deepest Level leaf node in the above binary tree is : 10
  66. Process finished with exit code 0
  67.  
  68. */
Add Comment
Please, Sign In to add comment