创建二叉树而不是二叉搜索树

我想创建一个从左到右填充的二叉树。 即如果要插入1,2,3那么树应该看起来像

1 / \ 2 3 

我写了一个插入函数,在树中插入节点。 对于第一个节点,一切正常。但是,对于下一个节点(如果我想将4,5作为子项插入2和后来6,7作为子节点3)我应该如何在父节点之间切换(2,3) ?

这是我的插入function

 struct node * Insert(struct node * node, int data) { if(node == NULL) return (newNode(data)); else { if(!node->left) node->left = Insert(node->left,data); if(!node->right) node->right = Insert(node->right,data); //can't figure out the condition when they both fail } } 

 struct node **InsertPoint(struct node **node, int *level){ if(*node == NULL) return node; int left_level, right_level; struct node **left_node, **right_node; left_level = right_level = *level + 1; left_node = InsertPoint(&(*node)->left, &left_level ); right_node = InsertPoint(&(*node)->right, &right_level); if(left_level <= right_level){ *level = left_level; return left_node; } else { *level = right_level; return right_node; } } struct node *Insert(struct node *node, int data) { struct node **np; int level = 0; np = InsertPoint(&node, &level); *np = newNode(data); return node; }