trees /usr*( book*( mark*( alex*( bill*( course*( junk ( junk ( work*( cop *( ch ( ch ( ch ( cop *( figure course*( fall*( fall*( fall*( spr*( sum*( syl ( syl ( syl ( grades( prog ( prog ( prog ( prog ( grades( unix directory with file sizes obtained via postorder traversal int filesystem::sizeconst int totalsize sizeofthisfile)ifisdirectoryfor each file in this directory (for each childtotalsize + size)return totalsizefigure pseudocode to calculate the size of directory subdirectories ( plus the one block used by /usrfor total of the pseudocode method size in figure implements this strategy if the current object is not directorythen size merely returns the number of blocks it uses in the current object otherwisethe number of blocks used by the directory is added to the number of blocks (recursivelyfound in all the children to see the difference between the postorder traversal strategy and the preorder traversal strategyfigure shows how the size of each directory or file is produced by the algorithm binary trees binary tree is tree in which no node can have more than two children figure shows that binary tree consists of root and two subtreestl and tr both of which could possibly be empty property of binary tree that is sometimes important is that the depth of an average binary tree is considerably smaller than an analysis shows that the average depth is on)and that for special type of binary treenamely the binary search treethe average value of the depth is (log nunfortunatelythe depth can be as large as as the example in figure shows