This thesis presents a bidirectional path guiding algorithm based on the practical path guiding (PPG) method. PPG uses a spatial-directional tree (SD-tree) to store incident radiance and trains it iteratively. We extend PPG to bidirectional path guiding by using two SD-trees that store radiance and importance respectively. Apart from the above extension, we also introduce a method called bidirectional data recording (BDR) for recording different data (radiance and importance) only in a single subpath. We also compare our results to other unbiased methods with scenes containing difficult light paths.