Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static int max_difference = 0;
- int solve (node *root)
- {
- int left_depth = 0, right_depth = 0, difference;
- if (!root)
- return 0;
- if (root -> get_left()) {
- left_depth = get_depth(root -> get_left());
- solve(root -> get_left());
- }
- if (root -> get_right()) {
- right_depth = get_depth(root -> get_right());
- solve(root -> get_right());
- }
- if ((difference = abs(left_depth - right_depth)) > max_difference)
- max_difference = difference;
- return max_difference;
- }
- static int len = -1, max_len = 0;
- int get_depth (node *root)
- {
- if (!root)
- return 0;
- ++len;
- if (!(root -> get_left()) && !(root -> get_right())) {
- if (len > max_len)
- max_len = len;
- }
- else if (root -> get_left())
- solve(root -> get_left());
- if (root -> get_right())
- solve(root -> get_right());
- --len;
- return max_len;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement