# TreeIterables

Artifact: [androidx.test.espresso:espresso-core](https://developer.android.com/jetpack/androidx/releases/test-espresso) [View Source](https://cs.android.com/search?q=file:androidx/test/espresso/util/TreeIterables.java+class:androidx.test.espresso.util.TreeIterables)

*** ** * ** ***


```
public final class TreeIterables
```

<br />

*** ** * ** ***

Utility methods for iterating over tree structured items.

Since the view hierarchy is a tree - having a method of iterating over its contents is useful.

This is generalized for any object which can display tree like qualities - but this generalization was done for testability concerns (since creating View hierarchies is a pain).

Only public methods of this utility class are considered public API of the test framework.

## Summary

| ### Nested types |
|---|
| `public class https://developer.android.com/reference/androidx/test/espresso/util/TreeIterables.ViewAndDistance` Represents the distance a given view is from the root view. |

| ### Public methods |
|---|---|
| `static https://developer.android.com/reference/java/lang/Iterable.html<https://developer.android.com/reference/android/view/View.html>` | `https://developer.android.com/reference/androidx/test/espresso/util/TreeIterables#breadthFirstViewTraversal(android.view.View)(https://developer.android.com/reference/android/view/View.html root)` Returns an iterable which iterates thru the provided view and its children in a breadth-first, row-level-order traversal. |
| `static https://developer.android.com/reference/java/lang/Iterable.html<https://developer.android.com/reference/android/view/View.html>` | `https://developer.android.com/reference/androidx/test/espresso/util/TreeIterables#depthFirstViewTraversal(android.view.View)(https://developer.android.com/reference/android/view/View.html root)` Returns an iterable which iterates thru the provided view and its children in a depth-first, in-order traversal. |
| `static https://developer.android.com/reference/java/lang/Iterable.html<https://developer.android.com/reference/androidx/test/espresso/util/TreeIterables.ViewAndDistance>` | `https://developer.android.com/reference/androidx/test/espresso/util/TreeIterables#depthFirstViewTraversalWithDistance(android.view.View)(https://developer.android.com/reference/android/view/View.html root)` Creates an iterable that traverses the tree formed by the given root. |

## Public methods

### breadthFirstViewTraversal

```
public static Iterable<View> breadthFirstViewTraversal(View root)
```

Returns an iterable which iterates thru the provided view and its children in a breadth-first, row-level-order traversal. That is to say that for a view such as: Root / \| \\ A R U /\| \|\\ B D G N Will be iterated: Root, A, R, U, B, D, G, N

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/view/View.html root` | the non-null, root view. |

### depthFirstViewTraversal

```
public static Iterable<View> depthFirstViewTraversal(View root)
```

Returns an iterable which iterates thru the provided view and its children in a depth-first, in-order traversal. That is to say that for a view such as: Root / \| \\ A R U /\| \|\\ B D G N Will be iterated: Root, A, B, D, R, G, N, U.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/view/View.html root` | the non-null, root view. |

### depthFirstViewTraversalWithDistance

```
public static Iterable<TreeIterables.ViewAndDistance> depthFirstViewTraversalWithDistance(View root)
```

Creates an iterable that traverses the tree formed by the given root.

Along with iteration order, the distance from the root element is also tracked.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/view/View.html root` | the root view to track from. |

| Returns |
|---|---|
| `https://developer.android.com/reference/java/lang/Iterable.html<https://developer.android.com/reference/androidx/test/espresso/util/TreeIterables.ViewAndDistance>` | An iterable of ViewAndDistance containing the view tree in a depth first order with the distance of a given node from the root. |