Деревья не в C

Еще одно полезное использование для Dispatcher.Invoke - это немедленное обновление пользовательского интерфейса в функции, выполняющей другие задачи:

// Force WPF to render UI changes immediately with this magic line of code...
Dispatcher.Invoke(new Action(() => { }), DispatcherPriority.ContextIdle);

Я использую это, чтобы обновить текст кнопки до « Обработка ... "и отключить его при выполнении запросов WebClient.

16
задан Remo.D 10 October 2008 в 16:30
поделиться

2 ответа

Как первая передача, Вы могли просто создать структура (давайте назовем ее TreeNode), который содержит задача , а также ряд указателей на TreeNode с. Этот набор мог или быть массивом (если N фиксируется) или связанный список (если , N является переменным). Связанный список потребовал бы, чтобы Вы объявили [еще 115] структура (позвольте нам, назвал его ListNode) с указатель TreeNode на фактического ребенка (часть дерева) и указатель на следующее ListNode в списке ( пустой указатель , если в конце списка).

Это могло бы выглядеть примерно так:

struct task {
  char command[MAX_LENGTH];
  int required_time;
};

struct TreeNode;

struct ListNode {
  struct TreeNode * child;
  struct ListNode * next;
};

struct TreeNode {
  struct task myTask;
  struct ListNode myChildList;
};
13
ответ дан 30 November 2019 в 10:10
поделиться

Любое дерево не может быть представлено как двоичное дерево, где в каждом узле левый указатель указывает первому ребенку, и правильный указатель указывает следующему брату.

             R                        R
           / | \                      |
          B  C  D                     B -- C -- D
         / \    |                     |         |
        E   F   G                     E -- F    G

Так, Ваш случай был бы:

struct task {
  char command[MAX_LENGTH];
  int required_time;
};

struct node {
  struct task taskinfo;
  struct node *firstchild;
  struct node *nextsibling;
};

Эта техника имеет преимущество, которое много алгоритмов более просты записать, поскольку они могут быть выражены на двоичном дереве, а не на более сложной структуре данных.

54
ответ дан 30 November 2019 в 10:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: