最简单的二叉树
typedef struct TNode
{
int have_value;
int v;
struct TNode *left, *right;
} Node;
Node *root;
Node* newNode() {
Node *u = (Node *)malloc(sizeof(Node));
if ( u != NULL ) {
u -> have_value = 0;
u -> left = u -> right = NULL;
}
return u;
}
void addNode( int v ) {
Node *n = newNode();
n -> v = v;
Node *c = root;
while (1) {
if ( v <= c->v ) {
if ( c->left != NULL ) c = c->left;
else {
c->left = n;
break;
}
}
else {
if ( c->right != NULL ) c = c->right;
else {
c->right = n;
break;
}
}
}
}
void printNodes(Node *n) {
if ( n->left != NULL ) printNodes( n->left );
printf("%d ",n->v);
if ( n->right != NULL ) printNodes( n->right );
}
int main() {
root = newNode();
root->v = 50;
for ( int i = 0; i < 1<<6; i++ ) {
addNode(rand()%100);
}
printNodes(root);
return 0;
}
广度优先查找:
void printNodesBFS() {
int frount = 0, rear = 1;
Node *q[(1<<6)+1];
q[0] = root;
while ( frount < rear ) {
Node *_n = q[frount++];
printf("%d ", _n->v);
if ( _n->left != NULL ) q[rear++] = _n->left;
if ( _n->right != NULL) q[rear++] = _n->right;
}
printf("\n");
}

浙公网安备 33010602011771号