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); } }
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; }
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; }
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); }