SE250:lab-7:mgha023: Difference between revisions
m 21 revision(s) |
(No difference)
|
Latest revision as of 05:20, 3 November 2008
> 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!!!