Практикум по курсу "Алгоритмизация и программирование". Часть 2. Андрианова А.А - 103 стр.

UptoLike

. Практикум по курсу «Алгоритмизация и программирование». Часть 2
// осуществляем рекурсивный вызов для
// построения поддерева этого выражения
next->left=CreateTree(str,1, i);
// правый операнд – выражение, находящееся
// справа от i-го символа, оно может
// содержать только операнды (level=2)
// осуществляем рекурсивный вызов для
// построения поддерева этого выражения
next->right=CreateTree(str+i+1,2, len-i-1);
}
else
// операции '*' и '/' не найдены, выражение
// может содержать только операнды (level=2)
// осуществляем рекурсивный вызов для
// построения поддерева выражения
next=CreateTree(str,2,len); break;
// выражение содержит операнды
case 2:
// создаем новый листовой узел дерева
next=new Tree;
next->operation='@';
sscanf(str, "%f", &(next->operand));
next->left=NULL;
next->right=NULL;
}
// возвращаем адрес созданного узла
// первый вызов функции вернет
// адрес корневого узла дерева
return next;
}
Домашнее задание
1. Дано бинарное дерево. Написать функцию уничтожения дерева.
2. Дано бинарное дерево. Написать функцию вычисления глубины дере-
ва.
3. Дано бинарное дерево. Написать функцию вычисления количества
узлов на заданном уровне дерева.
103
              .          Практикум по курсу «Алгоритмизация и программирование». Часть 2
                         // осуществляем рекурсивный вызов для
                         // построения поддерева этого выражения
                         next->left=CreateTree(str,1, i);

                         // правый операнд – выражение, находящееся
                         // справа от i-го символа, оно может
                         // содержать только операнды (level=2)
                         // осуществляем рекурсивный вызов для
                         // построения поддерева этого выражения
                         next->right=CreateTree(str+i+1,2, len-i-1);
                  }
                  else
                         // операции '*' и '/' не найдены, выражение
                         // может содержать только операнды (level=2)
                         // осуществляем рекурсивный вызов для
                         // построения поддерева выражения
                         next=CreateTree(str,2,len); break;

            // выражение содержит операнды
            case 2:
                 // создаем новый листовой узел дерева
                 next=new Tree;
                 next->operation='@';
                 sscanf(str, "%f", &(next->operand));
                 next->left=NULL;
                 next->right=NULL;
            }
            // возвращаем адрес созданного узла
            // первый вызов функции вернет
            // адрес корневого узла дерева
            return next;
      }

                                                           Домашнее задание

      1. Дано бинарное дерево. Написать функцию уничтожения дерева.

      2. Дано бинарное дерево. Написать функцию вычисления глубины дере-
ва.

    3. Дано бинарное дерево. Написать функцию вычисления количества
узлов на заданном уровне дерева.


                                          103