Even though it's not often used directly in coding problems, you should have clarity on implementing a Tree from scratch. This means that you should have an understanding of how to create a Node class, a Tree class and how to form links between the nodes.
In C++, you should be clear on whether the given tree structure uses a struct or a class. In Crio problems, the class based approach is used. In some of the resources, you may find the struct based approach to create a node. Both of these are largely similar and do not affect the code you'd write except for a few small syntax changes, such as using the dot(.) syntax to access class members in class implementation, against the arrow(->) syntax in structs.
Next, you should become familiar with the input formats that are used on Crio platform, and how you can construct a tree from the given format.
It is very strongly recommended to be aware of the recursive and iterative approaches for most of the tree problems - since interviewers have a tendency to ask both. Recursive approaches will generally have shorter code, but are performance-wise weaker as opposed to their iterative versions.
An algorithmic introduction to trees - must watch for all users getting started with Trees
Recommended to watch at 1.25 or 1.5 speed
An algorithmic introduction to trees - must watch for all users getting started with binary trees
Recommended to watch at 1.25 or 1.5 speed
Note that the approach shown in this video shows the implementation of Binary Trees using struct, and Crio's platforms use class based implementations, but once you understand the approach, both of these are very similar.
Refer this to understand class based implementation