Красный Черное дерево печать в порядке уровня в C - PullRequest
4 голосов
/ 07 января 2012

Я закончил красно-черное дерево в c, и мне трудно распечатать его в порядке уровней. У меня есть печатный порядок, но я не могу представить, как я должен отображать его в виде дерева на консоли печати. Это возможно? Можем ли мы реализовать BFS или DFS здесь? Я нашел алгоритм в вики, но я не могу его применить. Если у кого-то есть код для этого на C, не могли бы вы опубликовать его здесь, чтобы я мог его изучить? из вики:

levelorder(root) 
  q = empty queue
  q.enqueue(root)
  while not q.empty do
    node := q.dequeue()
    visit(node)
    if node.left ≠ null
      q.enqueue(node.left)
    if node.right ≠ null
      q.enqueue(node.right)

1 Ответ

4 голосов
/ 07 января 2012

Вы можете создать BFS, но может быть проще выполнить итеративный углубленный поиск , поскольку это избавит вас от необходимости реализации очереди FIFO в C. Псевдокод:

algorithm iterative-deepening(root)
    D = max-depth(root)
    for d=0 to D
        depth-limited-search(root, d)

/* variant of DFS */
algorithm depth-limited-search(node, d)
    if node != NULL
        if d == 0
            print node.contents
        else
            depth-limited-search(node.left, d - 1)
            depth-limited-search(node.right, d - 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...