You really ought to take a look at depth first search preorder traversal. Essentially, you'll just start at the initial parent node, then print in cascading fashion all of that "parents" descendants, then recurse or iterate to the next parent and so on.
Essentially, you are going to want to have a pointer to each nodes child left and right, then you can use a recursive call to consume the data (print or whatever task you are trying to accomplish from the scenegraph) call left, print, right.
dfs(SceneNode* head) {
if(head == nullptr)
//exit condition usually return if function is void
dfs(head->left);
//task to be completed
dfs(head->right);
}