Advertisement
Guest User

Untitled

a guest
Oct 19th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.98 KB | None | 0 0
  1. static int max_difference = 0;
  2. int solve (node *root)
  3. {
  4.     int left_depth = 0, right_depth = 0, difference;
  5.    
  6.     if (!root)
  7.         return 0;
  8.    
  9.     if (root -> get_left()) {
  10.         left_depth = get_depth(root -> get_left());
  11.         solve(root -> get_left());
  12.     }
  13.     if (root -> get_right()) {
  14.         right_depth = get_depth(root -> get_right());
  15.         solve(root -> get_right());
  16.     }
  17.    
  18.     if ((difference = abs(left_depth - right_depth)) > max_difference)
  19.         max_difference = difference;
  20.    
  21.     return max_difference;
  22. }
  23.  
  24.  
  25. static int len = -1, max_len = 0;
  26. int get_depth (node *root)
  27. {
  28.     if (!root)
  29.         return 0;
  30.    
  31.     ++len;
  32.     if (!(root -> get_left()) && !(root -> get_right())) {
  33.         if (len > max_len)
  34.             max_len = len;
  35.     }
  36.     else if (root -> get_left())
  37.         solve(root -> get_left());
  38.     if (root -> get_right())
  39.         solve(root -> get_right());
  40.    
  41.     --len;
  42.    
  43.     return max_len;
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement