tree data OPTIMIZE added first_sibling parameter

This change avoids unnecessary finding of the first sibling in case
the parent node is not available.
diff --git a/src/tree_data_common.c b/src/tree_data_common.c
index e1973cc..eb14433 100644
--- a/src/tree_data_common.c
+++ b/src/tree_data_common.c
@@ -773,9 +773,13 @@
 
     /* get the first sibling */
     if (node->parent) {
-        start = node->parent->child;
-    } else {
-        for (start = (struct lyd_node *)node; start->prev->next; start = start->prev) {}
+        return node->parent->child;
+    } else if (!node->prev->next) {
+        return (struct lyd_node *)node;
+    }
+
+    for (start = (struct lyd_node *)node->prev; start->prev->next; start = start->prev) {
+        assert(start != node);
     }
 
     return start;