Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int HeightNode(PNode Tree)
- {
- int l,r,height = 0;
- if(Tree != 0)
- {
- l = HeightNode(Tree -> Left);
- r = HeightNode(Tree -> Right);
- height = ((l > r) ? l : r) + 1;
- }
- return height;
- }
- void FindDebalancedNode(PNode & tree)
- {
- if (!tree)
- return;
- FindDebalancedNode(tree->Left);
- FindDebalancedNode(tree->Right);
- int leftSubtree = HeightOfSubtree(tree -> Left);
- int rightSubtree = HeightOfSubtree(tree -> Right);
- if (leftSubtree + 1 < rightSubtree)
- {
- DoRRTurn(tree);
- }
- }
- int HeightOfSubtree(PNode tree)
- {
- int l,r,height = 0;
- if(tree != 0)
- {
- l = HeightOfSubtree(tree -> Left);
- r = HeightOfSubtree(tree -> Right);
- height = ((l > r) ? l : r) + 1;
- }
- return height;
- }
- void DoRRTurn(PNode & p)
- {
- PNode q = p-> Right;
- p->Right = q -> Left;
- q->Left = p;
- p = q;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement