What you are doing is setting a new node (left or right), but I can't see where you are retaining the previous branch.
I would query a few things about the assignment. I don't think a char is suitable for determining a direction. All right, two of the potential values are in your method, but what about the other 63354 of them? Why are you using equals()? What sort of variable are you calling equals() on? When you work that out, I think you will see why you can't use equals(). If you have a restricted range of possible arguments, why are you using multiple ifs or if‑elses?
I am puzzled by a method which receives the parameter p. How are you going to find a tree node like that? At least that parameter makes the method easier to write.
Why is the term “child” so popular? I thought trees had branches and leaves.