Data structure course design binary tree non-recursive traversal traversal paper