예제 #1
0
void travel_tree (RBTREE *T , NODE *node) {  
    if (node != T->nil) {  
        travel_tree (T , node->left);  
        printf ("this node's color is %d\n" , node->color);  
        printf ("this node's key is %d\n" , node->key);  
        printf ("\n");  
        travel_tree (T , node->right);  
    }  
}  
예제 #2
0
int minDepth(struct TreeNode* root) {
	int *min = NULL; 

	if (!root)
		return 0;
	min = (int *)calloc(1, sizeof(int));
	*min = INT_MAX;

	travel_tree(root, 0, min);

	return *min;
}
예제 #3
0
int travel_tree(struct TreeNode *root, int prev_lev, int *min) {
	int cur_lev;

	if(!root)
		return 0;
	
	cur_lev = prev_lev + 1;

	if(root->left) {
		travel_tree(root->left, cur_lev, min);
	}
	if(root->right) {
		travel_tree(root->right, cur_lev, min);
	}
	if(!root->left && !root->right) {
		if (cur_lev < *min)
			*min = cur_lev;
	}

	return *min;
}
예제 #4
0
int main () {  
    RBTREE T;  
    init_rb_tree_root (&T);  
    NODE *temp;  

    int flag;  
    while (scanf ("%d" , &flag) , flag != -1) {  
        NODE *temp = create_rb_tree_node (T , flag);  
        rb_tree_insert (&T , temp);  
    }  
    rb_tree_delete (&T , T.root);  
    travel_tree (&T , T.root);  
}