Hi EPI,
The BinaryTreeNode struct provided on page 132 is implemented using unique_ptr for both left and right children, and does not contain a parent pointer.
When a parent pointer is required as in problem 9.4 (Compute the LCA when nodes have parent pointers), the solution mixes raw pointers with smart pointers which can be a bit tricky.
My question is why not implement the Binary Tree Node struct with shared pointers (shared_ptr) especially if you include left, right, and parent pointers in the struct?