SE250:lab-7:mgha023
> HELP
Commands:
QUIT -- exit the program
HELP -- display this message
ROTATE RIGHT -- right rotate on the selected node
ROTATE LEFT  -- left rotate on the selected node
BALANCE      -- make the tree have minimal height
SKEW         -- make the tree have maximal height
LEFT   -- move to the left child of the selected node
RIGHT  -- move to the right child of the selected node
PARENT -- move to the parent of the selected node
ROOT   -- move to the root of the tree
INSERT str -- add `str' to the tree if it is not present
MULTIPLE INSERT str
           -- add `str' to the tree (even if it is already present)
DELETE     -- delete the selected node
CLEAR TREE -- remove all nodes
AUTO DISPLAY ON
AUTO DISPLAY OFF
           -- turn on/off display of the tree before the > prompt
AUTO WRITE ON [file]
AUTO WRITE OFF
           -- turn on/off writing an image file of the tree before the > prompt
PRINT      -- print the elements of the tree, as a list
DISPLAY    -- display the structure of the tree
WRITE file -- create an image file showing the structure of the tree
Commands can be abbreviated; so "rr" is ROTATE RIGHT, etc.
one
> root
1 (*)
 2
   3
     4
       5
         6
           7
> right
1
 2 (*)
   3
     4
       5
         6
           7
> right
1
 2
   3 (*)
     4
       5
         6
           7
> parent
1 (*)
 2
   3
     4
       5
         6
           7
> root
1 (*)
 2
   3
     4
       5
         6
           7
> left
1
 2
   3
     4
       5
         6
           7
> right
Current node is not set
1
 2
   3
     4
       5
         6
           7
> root
1 (*)
 2
   3
     4
       5
         6
           7
> right
1
 2 (*)
   3
     4
       5
         6
           7
> right
1
 2
   3 (*)
     4
       5
         6
           7
> right
1
 2
   3
     4 (*)
       5
         6
           7
> right
1
 2
   3
     4
       5 (*)
         6
           7
> right
1
 2
   3
     4
       5
         6 (*)
           7
> right
1
 2
   3
     4
       5
         6
           7 (*)
> right
1
 2
   3
     4
       5
         6
           7
> left Current node is not set
1
 2
   3
     4
       5
         6
           7
> root
1 (*)
 2
   3
     4
       5
         6
           7
> right
1
 2 (*)
   3
     4
       5
         6
           7
> right
1
 2
   3 (*)
     4
       5
         6
           7
> right
1
 2
   3
     4 (*)
       5
         6
           7
> parent
1
 2 (*)
   3
     4
       5
         6
           7
> parent
1 (*)
 2
   3
     4
       5
         6
           7
> parent
1 (*)
 2
   3
     4
       5
         6
           7
two
> multiple insert 4 6 5 7 2 1 3
4 6 5 7 2 1 3 (*) //did not work
> clear tree
> insert 4
4 (*)
> insert 6
4 (*) 6
> insert 5
4 (*)
    5
  6
> insert 7
4 (*)
    5
  6
    7
> insert 2
  2
4 (*)
    5
  6
    7
> insert 1
    1
  2
4 (*)
    5
  6
    7
> insert 3
    1
  2
    3
4 (*)
    5
  6
    7
The way its facing is pretty odd but if thats the way it has ot be then thats the way it has to be:P
Ok, inserting in the order 4213657 also gives the same tree
H:\ec250\lab7>gcc *.c -o lab-7 && .\lab-7.exe
> insert 4
4 (*)
> insert 2
2 4 (*)
> insert 1
1 2 4 (*)
> insert 3
    1
  2
    3
4 (*)
> insert 6
    1
  2
    3
4 (*)
  6
> insert 5
    1
  2
    3
4 (*)
    5
  6
> insert 7
    1
  2
    3
4 (*)
    5
  6
    7
- The other combinations that works are :4261357, 4627153, 4623157, 4621735...yeah, there seem to be more...so ill stop here.
three
    1
  2
    3
4 (*)
    5
  6
    7
Tree[1,2,3,*4*,5,6,7]
> skew
1 (*)
  2
    3
      4
        5
          6
            7
Tree[*1*,2,3,4,5,6,7]
> rl //rotate left
  1 (*)
2
  3
    4
      5
        6
          7
>root
 1 
2(*)
  3
    4
      5
        6
          7
Tree[1,*2*,3,4,5,6,7]
four
   3
     4
       5
         6
           7
> print Tree[*1*,2,3,4,5,6,7]
> balance
1 2 3
4 (*)
5 6 7
> skew
1 (*)
 2
   3
     4
       5
         6
           7
> right
1
 2 (*)
   3
     4
       5
         6
           7
> root
1 (*)
 2
   3
     4
       5
         6
           7
> right
1
 2 (*)
   3
     4
       5
         6
           7
> right
1
 2
   3 (*)
     4
       5
         6
           7
> right
1
 2
   3
     4 (*)
       5
         6
           7
> root
1 (*)
 2
   3
     4
       5
         6
           7
> rr //doesnt do anything becasue it has nothign on its left to skew add above and make a root of.
1 (*)
 2
   3
     4
       5
         6
           7
> root 1 (*)
 2
   3
     4
       5
         6
           7
> print Tree[*1*,2,3,4,5,6,7]
> skew
1 (*)
 2
   3
     4
       5
         6
           7
> right
1
 2 (*)
   3
     4
       5
         6
           7
> right
1
 2
   3 (*)
     4
       5
         6
           7
> right
1
 2
   3
     4 (*)
       5
         6
           7
> r
1
 2
   3
     4
       5 (*)
         6
           7
> rl
1
 2
   3
     4
         5 (*)
       6
         7
> root
1 (*)
 2
   3
     4
         5
       6
         7
> right
1
 2 (*)
   3
     4
         5
       6
         7
> rl
1
   2 (*)
 3
   4
       5
     6
       7
> r
1
   2
 3
   4
       5
     6
       7
> balance
1 2 3 4 (*) 5 6 7
> s
1 (*)
 2
   3
     4
       5
         6
           7
> r
1
 2 (*)
   3
     4
       5
         6
           7
> r
1
 2
   3 (*)
     4
       5
         6
           7
> r
1
 2
   3
     4 (*)
       5
         6
           7
> rr
1
 2
   3
     4 (*)
       5
         6
           7
> rr
1
 2
   3
     4 (*)
       5
         6
           7
> l
1
 2
   3
     4
       5
         6
           7
> root
1 (*)
  2
    3
      4
        5
          6
            7
> r
1
  2 (*)
    3
      4
        5
          6
            7
> rr
1
  2 (*)
    3
      4
        5
          6
            7
five
1 (*)
 2
   3
     4
       5
         6
           7
             8
> rl
 1 (*)
2
 3
   4
     5
       6
         7
           8
> root
 1
2 (*)
 3
   4
     5
       6
         7
           8
> rl
   1
 2 (*)
3
 4
   5
     6
       7
         8
> root
   1
 2
3 (*)
 4
   5
     6
       7
         8
> rl
     1
   2
 3 (*)
4
 5
   6
     7
       8
> root
     1
   2
 3
4 (*)
 5
   6
     7
       8
> rl
       1
     2
   3
 4 (*)
5
 6
   7
     8
> root
       1
     2
   3
 4
5 (*)
 6
   7
     8
> rl
         1
       2
     3
   4
 5 (*)
6
 7
   8
> root
         1
       2
     3
   4
 5
6 (*)
 7
   8
> rl
           1
         2
       3
     4
   5
 6 (*)
7
 8
> root
           1
         2
       3
     4
   5
 6
7 (*)
 8
> rl
             1
           2
         3
       4
     5
   6
 7 (*)
8
> root
             1
           2
         3
       4
     5
   6
 7
8 (*)
> rl
             1
           2
         3
       4
     5
   6
 7
8 (*)
>Woohoo, a left skewed tree:D
SIX!
> skew
1 (*)
  2
    3
      4
        5
          6
            7
> rl
  1 (*)
2
  3
    4
      5
        6
          7
> root
  1
2 (*)
  3
    4
      5
        6
          7
> rl
    1
  2 (*)
3
  4
    5
      6
        7
> root
    1
  2
3 (*)
  4
    5
      6
        7
> rl
      1
    2
  3 (*)
4
  5
    6
      7
> root
      1
    2
  3
4 (*)
  5
    6
      7
> l
      1
    2
  3 (*)
4
  5
    6
      7
> rr
    1
  2
    3 (*)
4
  5
    6
      7
> root
    1
  2
    3
4 (*)
  5
    6
      7
> r
    1
  2
    3
4
  5 (*)
    6
      7
> rl
    1
  2
    3
4
    5 (*)
  6
    7
SEVEN
1 2 3 4 (*) 5 6 7
> i 8
   1
 2
   3
4 (*)
   5
 6
   7
     8
> i 9
   1
 2
   3
4 (*)
   5
 6
   7
     8
       9
> r
   1
 2
   3
4
   5
 6 (*)
   7
     8
       9
> r
   1
 2
   3
4
   5
 6
   7 (*)
     8
       9
> rl
   1
 2
   3
4
   5
 6
     7 (*)
   8
     9
EIGHT
No not really. Well lets look say we have 5 as the root and the numbers 321 and 567 on either side of it lined up one below the other...so the heigh tof the tree is 3. now say 3 is removed. the tree is not balanced anymore. going along hte smae path and rotating will not rebalnace hte tree ... hence no, it cannot always be done...
excuse the typos!!!