Пример #1
0
/* this is very haphazzard */
void show_tree(rtn_t * root, struct trunk *prev, int is_left)
{
	char *prev_str = NULL;
	
	struct trunk this_disp;
	
	if (root == NULL) return;
	
	this_disp.prev = prev;
	this_disp.str = "    ";
	
	prev_str = this_disp.str;

/*	*/
	show_tree(root->next[0], &this_disp, 1);

	if (!prev)
		this_disp.str = "---";
	else if (is_left) {
		this_disp.str = ".--";
		prev_str = "   |";
	} else {
		this_disp.str = "`--";
		prev->str = prev_str;
	}
/* */
	show_trunks(&this_disp);
	printf("%d\n", *(int *)root->data);
 
	if (prev) prev->str = prev_str;
	this_disp.str = "   |";
 
	show_tree(root->next[1], &this_disp, 0);
	if (!prev) puts("");
}
Пример #2
0
Файл: avl.c Проект: Emeraude/AVL
static void __show(t_avl const *const avl, t_node const *const root, t_trunk *const prev, int const is_left) {
  t_trunk disp = {"    ", prev};
  char *prev_str = disp.str;

  if (root == nil)
    return;
  __show(avl, root->node[0], &disp, 1);
  if (!prev)
    disp.str = "---";
  else if (is_left) {
    disp.str = ".--";
    prev_str = "   |";
  }
  else {
    disp.str = "`--";
    prev->str = prev_str;
  }
  show_trunks(&disp);
  fflush(stdin);
  avl->hook_print(root->val);
  if (prev)
    prev->str = prev_str;
  disp.str = "   |";
  __show(avl, root->node[1], &disp, 0);
  if (!prev)
    printf("\n");
}
Пример #3
0
void show_trunks(struct trunk *p)
{
	if (!p) return;
	show_trunks(p->prev);
	printf("%s", p->str);
}
Пример #4
0
Файл: avl.c Проект: Emeraude/AVL
/* show */
static void show_trunks(t_trunk const *const trunk) {
  if (!trunk)
    return;
  show_trunks(trunk->prev);
  printf("%s", trunk->str);
}