Tree is dynamic data structures. Trees can expand & contract as the program executes and are implemented via pointers. A tree deallocates memory whereas an element is deleted.
Non-linear data structures: Linear data structures contain properties of ordering relationship (can the elements/nodes of tree be sorted?). There is no first or last node. There is no ordering relationship amongst elements of tree.
Items of a tree can be ordered partially into a hierarchy through parent-child relationship. Root node is at the top of the hierarchy & leafs are at the bottom layer of the hierarchy. Therefore, trees can be termed as hierarchical data structures.