• + 2 comments

    Thanks, checking the level sign i was able to solve this problem

    void verticalTraversal(node* head, map<int,int> &levelMap, int level) {
        if(head == NULL)
            return;
        if(levelMap.count(level) == 0)
            levelMap[level] = head->data;
        if(level == 0 || level < 0)
            verticalTraversal(head->left, levelMap, level - 1);
        if(level == 0 || level > 0)
            verticalTraversal(head->right, levelMap, level + 1);
    }
    void topView(node * root) { 
        if (root == NULL)
            return;
     
        map<int, int> levelMap;
        verticalTraversal(root, levelMap, 0);
        
        for (map<int,int>::iterator it=levelMap.begin(); it!=levelMap.end(); ++it) {
            cout << it->second << ' ';
        }
    }