Three methods:
1) You can forward port 22 on your router to the port on your PC that the daemon is listening at. When you ssh PCuser@Public_IP_of_PC
(22 is the default port, if another port is forwarded, pass it with -p argument) you will access the PC behind the router. The exact dynamics of the process is explained in detail here: https://unix.stackexchange.com/questions/19620/ssh-port-forward-to-access-my-home-machine-from-anywhere
2) Create a reverse ssh tunnel from the PC behind router to laptop (provided that laptop has a certain IP) as such:
ssh -v -N -R port_of_laptop:localhost:local_port_of_pc laptop_user@$laptop_ip
(however is laptop is also behind a router, this time a port has to be forwarded from the laptop's router top a port at laptop.)
At the laptop side you just ssh as such:
ssh -v -p port_of_laptop@localhost
3) Or you can setup an OpenVPN server listening on UDP 1194 port (best way is to use a free-tier micro EC2 instance on AWS with elastic IP). Then you'll make your laptop and PC clients inside the same VPN. This way, connected to the VPN through tun0 interface, all clients can access each other as if they are on the same LAN even if they are actually not. client-to-client connection must also be enabled. The good thing with is approach is that, you don't have to track the address of the router that the PC is connected to (if it has a dynamic IP that changes in each reboot/reconnection).
ssh PCuser@IP_of_PC_given_by_tun0