| 156 | |
| 157 | template <typename Data> |
| 158 | size_t Size(types::Ptr<Data> const & node) |
| 159 | { |
| 160 | size_t size = 0; |
| 161 | PreOrderVisit(node, [&](auto const &) { ++size; }); |
| 162 | return size; |
| 163 | } |
| 164 | |
| 165 | template <typename Data> |
| 166 | decltype(auto) GetRoot(types::Ptr<Data> node) |