from top to bottom, like postorder traversal