### Method

# GLib Node traverse

#### Declaration

    void
    g_node_traverse (
      GNode* root,
      GTraverseType order,
      GTraverseFlags flags,
      gint max_depth,
      GNodeTraverseFunc func,
      gpointer data
    )

#### Description

Traverses a tree starting at the given root `GNode`. It calls the given function for each node visited. The traversal can be halted at any point by returning `TRUE` from `func`. `func` must not do anything that would modify the structure of the tree.

#### Parameters

`order`

  Type: `GTraverseType`

  The order in which nodes are visited - `G_IN_ORDER`, `G_PRE_ORDER`, `G_POST_ORDER`, or `G_LEVEL_ORDER`.

`flags`

  Type: `GTraverseFlags`

  Which types of children are to be visited, one of `G_TRAVERSE_ALL`, `G_TRAVERSE_LEAVES` and `G_TRAVERSE_NON_LEAVES`.

`max_depth`

  Type: `gint`

  The maximum depth of the traversal. Nodes below this depth will not be visited. If max_depth is -1 all nodes in the tree are visited. If depth is 1, only the root is visited. If depth is 2, the root and its children are visited. And so on.

`func`

  Type: `GNodeTraverseFunc`

  The function to call for each visited `GNode`.

`data`

  Type: `gpointer`

  User data to pass to the function.

  The argument can be `NULL`.
  The data is owned by the caller of the method.