added preOrderTraverse/Visitor