Advertisement
Guest User

Untitled

a guest
Feb 26th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.91 KB | None | 0 0
  1. int HeightNode(PNode Tree)
  2. {
  3. int l,r,height = 0;
  4. if(Tree != 0)
  5. {
  6. l = HeightNode(Tree -> Left);
  7. r = HeightNode(Tree -> Right);
  8. height = ((l > r) ? l : r) + 1;
  9. }
  10. return height;
  11. }
  12.  
  13. void FindDebalancedNode(PNode & tree)
  14. {
  15. if (!tree)
  16. return;
  17. FindDebalancedNode(tree->Left);
  18. FindDebalancedNode(tree->Right);
  19. int leftSubtree = HeightOfSubtree(tree -> Left);
  20. int rightSubtree = HeightOfSubtree(tree -> Right);
  21. if (leftSubtree + 1 < rightSubtree)
  22. {
  23. DoRRTurn(tree);
  24. }
  25. }
  26.  
  27. int HeightOfSubtree(PNode tree)
  28. {
  29. int l,r,height = 0;
  30. if(tree != 0)
  31. {
  32. l = HeightOfSubtree(tree -> Left);
  33. r = HeightOfSubtree(tree -> Right);
  34. height = ((l > r) ? l : r) + 1;
  35. }
  36. return height;
  37. }
  38.  
  39. void DoRRTurn(PNode & p)
  40. {
  41. PNode q = p-> Right;
  42. p->Right = q -> Left;
  43. q->Left = p;
  44. p = q;
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement