# lv_tree.h (/api/private/misc/lv_tree_h)



<ApiSummary functions="3" enums="1" structs="2" typedefs="6" macros="1" variables="1" />

Functions [#functions]

<ApiMember kind="function" name="lv_tree_node_create" file="private/misc/lv_tree.h" line="73" url="https://github.com/lvgl/lvgl/tree/e1a0ad863f29742359bc680d6a7d973448ec2285/src/misc/lv_tree.h#L73">
  lv_tree_node_create [#lv_tree_node_create]

  Create a tree node.

  ```c title=" " lineNumbers=1
  lv_tree_node_t * lv_tree_node_create(const lv_tree_class_t *class_p, lv_tree_node_t *parent)
  ```

  <span className="sr-only">
    Parameters
  </span>

  | Name      | Type                                                                 | Description                                                |
  | --------- | -------------------------------------------------------------------- | ---------------------------------------------------------- |
  | `class_p` | <ApiLink name="lv_tree_class_t" display="const lv_tree_class_t *" /> | pointer to a class of the node                             |
  | `parent`  | <ApiLink name="lv_tree_node_t" display="lv_tree_node_t *" />         | pointer to the parent node (or NULL if it's the root node) |

  **Returns:** <ApiLink name="lv_tree_node_t" display="lv_tree_node_t *" /> — pointer to the new node
</ApiMember>

<ApiMember kind="function" name="lv_tree_node_delete" file="private/misc/lv_tree.h" line="79" url="https://github.com/lvgl/lvgl/tree/e1a0ad863f29742359bc680d6a7d973448ec2285/src/misc/lv_tree.h#L79">
  lv_tree_node_delete [#lv_tree_node_delete]

  Delete a tree node and all its children recursively.

  ```c title=" " lineNumbers=1
  void lv_tree_node_delete(lv_tree_node_t *node)
  ```

  <span className="sr-only">
    Parameters
  </span>

  | Name   | Type                                                         | Description                   |
  | ------ | ------------------------------------------------------------ | ----------------------------- |
  | `node` | <ApiLink name="lv_tree_node_t" display="lv_tree_node_t *" /> | pointer to the node to delete |
</ApiMember>

<ApiMember kind="function" name="lv_tree_walk" file="private/misc/lv_tree.h" line="91" url="https://github.com/lvgl/lvgl/tree/e1a0ad863f29742359bc680d6a7d973448ec2285/src/misc/lv_tree.h#L91">
  lv_tree_walk [#lv_tree_walk]

  Walk the tree recursively and call a callback function on each node.

  ```c title=" " lineNumbers=1
  bool lv_tree_walk(const lv_tree_node_t *node, lv_tree_walk_mode_t mode, lv_tree_traverse_cb_t cb, lv_tree_before_cb_t bcb, lv_tree_after_cb_t acb, void *user_data)
  ```

  <span className="sr-only">
    Parameters
  </span>

  | Name        | Type                                                               | Description                                                    |
  | ----------- | ------------------------------------------------------------------ | -------------------------------------------------------------- |
  | `node`      | <ApiLink name="lv_tree_node_t" display="const lv_tree_node_t *" /> | pointer to the root node of the tree                           |
  | `mode`      | <ApiLink name="lv_tree_walk_mode_t" />                             | LV\_TREE\_WALK\_PRE\_ORDER or LV\_TREE\_WALK\_POST\_ORDER      |
  | `cb`        | <ApiLink name="lv_tree_traverse_cb_t" />                           | callback function to call on each node                         |
  | `bcb`       | <ApiLink name="lv_tree_before_cb_t" />                             | callback function to call before visiting a node               |
  | `acb`       | <ApiLink name="lv_tree_after_cb_t" />                              | callback function to call after visiting a node                |
  | `user_data` | `void *`                                                           | user data to pass to the callback functions **May** be `NULL`. |

  **Returns:** `bool` — true: traversal is finished; false: traversal broken
</ApiMember>

Enums [#enums]

<ApiMember kind="enum" name="_lv_tree_walk_mode_t" file="private/misc/lv_tree.h" line="51" url="https://github.com/lvgl/lvgl/tree/e1a0ad863f29742359bc680d6a7d973448ec2285/src/misc/lv_tree.h#L51">
  \_lv_tree_walk_mode_t [#_lv_tree_walk_mode_t]

  | Name                      | Value |
  | ------------------------- | ----- |
  | `LV_TREE_WALK_PRE_ORDER`  | `0`   |
  | `LV_TREE_WALK_POST_ORDER` |       |
</ApiMember>

Structs [#structs]

<ApiMember kind="struct" name="_lv_tree_class_t">
  \_lv_tree_class_t [#_lv_tree_class_t]

  Describe the common methods of every object. Similar to a C++ class.

  | Member           | Type                                                                 | Description |
  | ---------------- | -------------------------------------------------------------------- | ----------- |
  | `base_class`     | <ApiLink name="lv_tree_class_t" display="const lv_tree_class_t *" /> |             |
  | `instance_size`  | `uint32_t`                                                           |             |
  | `constructor_cb` | <ApiLink name="lv_tree_constructor_cb_t" />                          |             |
  | `destructor_cb`  | <ApiLink name="lv_tree_destructor_cb_t" />                           |             |
</ApiMember>

<ApiMember kind="struct" name="_lv_tree_node_t">
  \_lv_tree_node_t [#_lv_tree_node_t]

  Description of a tree node

  | Member      | Type                                                                 | Description |
  | ----------- | -------------------------------------------------------------------- | ----------- |
  | `parent`    | <ApiLink name="lv_tree_node_t" display="lv_tree_node_t *" />         |             |
  | `children`  | <ApiLink name="lv_tree_node_t" display="lv_tree_node_t **" />        |             |
  | `child_cnt` | `uint32_t`                                                           |             |
  | `child_cap` | `uint32_t`                                                           |             |
  | `class_p`   | <ApiLink name="lv_tree_class_t" display="const lv_tree_class_t *" /> |             |
</ApiMember>

Typedefs [#typedefs]

<ApiMember kind="typedef" name="lv_tree_constructor_cb_t" file="private/misc/lv_tree.h" line="28" url="https://github.com/lvgl/lvgl/tree/e1a0ad863f29742359bc680d6a7d973448ec2285/src/misc/lv_tree.h#L28">
  lv_tree_constructor_cb_t [#lv_tree_constructor_cb_t]

  ```c title=" " lineNumbers=1
  typedef void(* lv_tree_constructor_cb_t) (const lv_tree_class_t *class_p, lv_tree_node_t *node)
  ```
</ApiMember>

<ApiMember kind="typedef" name="lv_tree_destructor_cb_t" file="private/misc/lv_tree.h" line="29" url="https://github.com/lvgl/lvgl/tree/e1a0ad863f29742359bc680d6a7d973448ec2285/src/misc/lv_tree.h#L29">
  lv_tree_destructor_cb_t [#lv_tree_destructor_cb_t]

  ```c title=" " lineNumbers=1
  typedef void(* lv_tree_destructor_cb_t) (const lv_tree_class_t *class_p, lv_tree_node_t *node)
  ```
</ApiMember>

<ApiMember kind="typedef" name="lv_tree_walk_mode_t" file="private/misc/lv_tree.h" line="55" url="https://github.com/lvgl/lvgl/tree/e1a0ad863f29742359bc680d6a7d973448ec2285/src/misc/lv_tree.h#L55">
  lv_tree_walk_mode_t [#lv_tree_walk_mode_t]

  ```c title=" " lineNumbers=1
  typedef uint8_t lv_tree_walk_mode_t
  ```
</ApiMember>

<TypeUsedBy name="lv_tree_walk_mode_t" count="1">
  * `lv_tree_walk` — param `mode`
</TypeUsedBy>

<ApiMember kind="typedef" name="lv_tree_traverse_cb_t" file="private/misc/lv_tree.h" line="57" url="https://github.com/lvgl/lvgl/tree/e1a0ad863f29742359bc680d6a7d973448ec2285/src/misc/lv_tree.h#L57">
  lv_tree_traverse_cb_t [#lv_tree_traverse_cb_t]

  ```c title=" " lineNumbers=1
  typedef bool(* lv_tree_traverse_cb_t) (const lv_tree_node_t *node, void *user_data)
  ```
</ApiMember>

<TypeUsedBy name="lv_tree_traverse_cb_t" count="1">
  * `lv_tree_walk` — param `cb`
</TypeUsedBy>

<ApiMember kind="typedef" name="lv_tree_before_cb_t" file="private/misc/lv_tree.h" line="58" url="https://github.com/lvgl/lvgl/tree/e1a0ad863f29742359bc680d6a7d973448ec2285/src/misc/lv_tree.h#L58">
  lv_tree_before_cb_t [#lv_tree_before_cb_t]

  ```c title=" " lineNumbers=1
  typedef bool(* lv_tree_before_cb_t) (const lv_tree_node_t *node, void *user_data)
  ```
</ApiMember>

<TypeUsedBy name="lv_tree_before_cb_t" count="1">
  * `lv_tree_walk` — param `bcb`
</TypeUsedBy>

<ApiMember kind="typedef" name="lv_tree_after_cb_t" file="private/misc/lv_tree.h" line="59" url="https://github.com/lvgl/lvgl/tree/e1a0ad863f29742359bc680d6a7d973448ec2285/src/misc/lv_tree.h#L59">
  lv_tree_after_cb_t [#lv_tree_after_cb_t]

  ```c title=" " lineNumbers=1
  typedef void(* lv_tree_after_cb_t) (const lv_tree_node_t *node, void *user_data)
  ```
</ApiMember>

<TypeUsedBy name="lv_tree_after_cb_t" count="1">
  * `lv_tree_walk` — param `acb`
</TypeUsedBy>

Macros [#macros]

<ApiMember kind="macro" name="LV_TREE_NODE" file="private/misc/lv_tree.h" line="21" url="https://github.com/lvgl/lvgl/tree/e1a0ad863f29742359bc680d6a7d973448ec2285/src/misc/lv_tree.h#L21">
  LV_TREE_NODE [#lv_tree_node]

  ```c title=" " lineNumbers=1
  #define LV_TREE_NODE(n) \
      ((lv_tree_node_t*)(n))
  ```
</ApiMember>

Variables [#variables]

<ApiMember kind="variable" name="lv_tree_node_class" file="private/misc/lv_tree.h" line="65" url="https://github.com/lvgl/lvgl/tree/e1a0ad863f29742359bc680d6a7d973448ec2285/src/misc/lv_tree.h#L65">
  lv_tree_node_class [#lv_tree_node_class]

  ```c title=" " lineNumbers=1
  const lv_tree_class_t lv_tree_node_class
  ```
</ApiMember>

Dependencies [#dependencies]

<FileIncludes includes="[&#x22;lvgl_public.h&#x22;]" includedBy="[&#x22;lv_svg_private.h&#x22;, &#x22;lvgl_private.h&#x22;]" />
