🗊Презентация CPP

Нажмите для полного просмотра!
CPP, слайд №1CPP, слайд №2CPP, слайд №3CPP, слайд №4CPP, слайд №5CPP, слайд №6CPP, слайд №7CPP, слайд №8CPP, слайд №9CPP, слайд №10CPP, слайд №11CPP, слайд №12CPP, слайд №13CPP, слайд №14CPP, слайд №15CPP, слайд №16CPP, слайд №17CPP, слайд №18CPP, слайд №19CPP, слайд №20CPP, слайд №21CPP, слайд №22CPP, слайд №23CPP, слайд №24CPP, слайд №25CPP, слайд №26CPP, слайд №27CPP, слайд №28CPP, слайд №29CPP, слайд №30CPP, слайд №31CPP, слайд №32CPP, слайд №33CPP, слайд №34CPP, слайд №35CPP, слайд №36CPP, слайд №37CPP, слайд №38CPP, слайд №39CPP, слайд №40CPP, слайд №41CPP, слайд №42CPP, слайд №43

Содержание

Вы можете ознакомиться и скачать презентацию на тему CPP. Доклад-сообщение содержит 43 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





CPP
02_01
Описание слайда:
CPP 02_01

Слайд 2






ЛР
Описание слайда:
ЛР

Слайд 3





Курсы Stepik
https://stepik.org/course/7/syllabus
https://stepik.org/course/187/syllabus
Описание слайда:
Курсы Stepik https://stepik.org/course/7/syllabus https://stepik.org/course/187/syllabus

Слайд 4





OpenEdu
https://openedu.ru/course/ITMOUniversity/PWADEV/
Описание слайда:
OpenEdu https://openedu.ru/course/ITMOUniversity/PWADEV/

Слайд 5





Деревья
Описание слайда:
Деревья

Слайд 6





Определение 1
дерево как конечное множество T, состоящее из одного или более элементов (называемых вершинами или узлами), таких, что
имеется одна специально выделенная вершина, называемая корнем дерева;
остальные вершины (исключая корень) содержатся в m попарно непересекающихся множествах T1,T2,...,Tm, каждое из которых, в свою очередь, является деревом.
   
 Деревья T1,T2,...Tm называются поддеревьями данного дерева.
    Упорядоченным деревом мы будем называть такое дерево, в котором важен порядок следования поддеревьев T1,T2,...Tm.
Описание слайда:
Определение 1 дерево как конечное множество T, состоящее из одного или более элементов (называемых вершинами или узлами), таких, что имеется одна специально выделенная вершина, называемая корнем дерева; остальные вершины (исключая корень) содержатся в m попарно непересекающихся множествах T1,T2,...,Tm, каждое из которых, в свою очередь, является деревом. Деревья T1,T2,...Tm называются поддеревьями данного дерева. Упорядоченным деревом мы будем называть такое дерево, в котором важен порядок следования поддеревьев T1,T2,...Tm.

Слайд 7






Дуга - это ориентированная связь между двумя вершинами дерева, поэтому, например, корень можно определить как такую вершину дерева, в который не входит ни одной дуги, поэтому часто говорят, что корень - это "исходная" вершина дерева, через которую доступны остальные его вершины.
    Ребро - это неориентированная связь между двумя вершинами дерева. Ясно, что ребро можно превратить в дугу, если задать на нем ориентацию (направление), а любое дерево можно превратить в ориентированное дерево, если задать ориентацию ребер.
    Количество поддеревьев некоторой вершины называется степенью этой вершины. Деревья, имеющие степень больше 2, называются сильно ветвящимися деревьями.
    Вершина с нулевой степенью называется листом, иначе - она называется внутренней вершиной (внутренним узлом).
    Число листьев дерева называется весом дерева.
    Символы A,B,C,..., которые служат для обозначения вершин, называются метками вершин.
Описание слайда:
Дуга - это ориентированная связь между двумя вершинами дерева, поэтому, например, корень можно определить как такую вершину дерева, в который не входит ни одной дуги, поэтому часто говорят, что корень - это "исходная" вершина дерева, через которую доступны остальные его вершины. Ребро - это неориентированная связь между двумя вершинами дерева. Ясно, что ребро можно превратить в дугу, если задать на нем ориентацию (направление), а любое дерево можно превратить в ориентированное дерево, если задать ориентацию ребер. Количество поддеревьев некоторой вершины называется степенью этой вершины. Деревья, имеющие степень больше 2, называются сильно ветвящимися деревьями. Вершина с нулевой степенью называется листом, иначе - она называется внутренней вершиной (внутренним узлом). Число листьев дерева называется весом дерева. Символы A,B,C,..., которые служат для обозначения вершин, называются метками вершин.

Слайд 8






A, B, C, D, K, L, M, N, R - метки вершин, вершина А - корень, вершины C, L, R, M, N, K - листья, вес дерева равен 6 (количество листьев - 6), вершина В имеет степень 2, вершина D имеет степень 4
Описание слайда:
A, B, C, D, K, L, M, N, R - метки вершин, вершина А - корень, вершины C, L, R, M, N, K - листья, вес дерева равен 6 (количество листьев - 6), вершина В имеет степень 2, вершина D имеет степень 4

Слайд 9





Определение 2 
Вершина Y, которая находится непосредственно под узлом X, называется (непосредственным) потомком (сыном) X, вершина X в данном случае называется (непосредственным) предком (отцом) Y.
    В этом случае, если вершина X находится на уровне i, то говорят, что вершина Y находится на уровне i+1. Мы будем считать, что корень дерева расположен на уровне 0. Максимальный уровень какой-либо вершины дерева называется его глубиной или высотой.
    Максимальная степень всех вершин дерева называется степенью дерева.
Описание слайда:
Определение 2 Вершина Y, которая находится непосредственно под узлом X, называется (непосредственным) потомком (сыном) X, вершина X в данном случае называется (непосредственным) предком (отцом) Y. В этом случае, если вершина X находится на уровне i, то говорят, что вершина Y находится на уровне i+1. Мы будем считать, что корень дерева расположен на уровне 0. Максимальный уровень какой-либо вершины дерева называется его глубиной или высотой. Максимальная степень всех вершин дерева называется степенью дерева.

Слайд 10





Следствия
если вершина не имеет потомков, то она является листом;
степень внутренней вершины можно определить как число ее (непосредственных) потомков.
Описание слайда:
Следствия если вершина не имеет потомков, то она является листом; степень внутренней вершины можно определить как число ее (непосредственных) потомков.

Слайд 11






максимальное число вершин для дерева с высотой h и степенью d можно найти по формуле
Описание слайда:
максимальное число вершин для дерева с высотой h и степенью d можно найти по формуле

Слайд 12





Определение 3 
Количество дуг, которые нужно пройти, чтобы продвинуться от корня к вершине X, называется длиной пути к вершине X. 
Вершина, расположенная на уровне i, имеет длину пути i.
  Ветвью будем называть путь от корня дерева к любому ее листу.
    Длина пути дерева определяется как сумма длин путей ко всем его вершинам. Она также называется длиной внутреннего пути дерева.
Описание слайда:
Определение 3 Количество дуг, которые нужно пройти, чтобы продвинуться от корня к вершине X, называется длиной пути к вершине X. Вершина, расположенная на уровне i, имеет длину пути i. Ветвью будем называть путь от корня дерева к любому ее листу. Длина пути дерева определяется как сумма длин путей ко всем его вершинам. Она также называется длиной внутреннего пути дерева.

Слайд 13






Длина внутреннего пути = Длина внутреннего пути в левом поддереве + Длина внутреннего пути в правом поддереве + Количество узлов в дереве - 1.
Описание слайда:
Длина внутреннего пути = Длина внутреннего пути в левом поддереве + Длина внутреннего пути в правом поддереве + Количество узлов в дереве - 1.

Слайд 14





Определение 4
Лес - это множество деревьев (обычно упорядоченное), состоящее из некоторого (быть может, равного нулю) числа непересекающихся деревьев. Часто для леса, состоящего из n деревьев пользуются термином "дерево с n-кратным корнем".
Описание слайда:
Определение 4 Лес - это множество деревьев (обычно упорядоченное), состоящее из некоторого (быть может, равного нулю) числа непересекающихся деревьев. Часто для леса, состоящего из n деревьев пользуются термином "дерево с n-кратным корнем".

Слайд 15





Определение 5 
бинарное дерево конечное множество элементов (называемых вершинами или узлами), которое:
либо пусто,
либо состоит из корня (некоторая выделенная нами вершина), связанного с двумя различными бинарными деревьями, называемыми левым и правым поддеревом корня.
Описание слайда:
Определение 5 бинарное дерево конечное множество элементов (называемых вершинами или узлами), которое: либо пусто, либо состоит из корня (некоторая выделенная нами вершина), связанного с двумя различными бинарными деревьями, называемыми левым и правым поддеревом корня.

Слайд 16


CPP, слайд №16
Описание слайда:

Слайд 17





Определение 6
два бинарных дерева T и T' подобны, если они имеют одинаковую структуру; это означает, что подобные деревья либо оба пусты, либо оба непусты и их левые и правые поддеревья соответственно подобны.
    Попросту говоря, подобие означает, что графические изображения деревьев T и T' имеют одинаковую "конфигурацию".
Описание слайда:
Определение 6 два бинарных дерева T и T' подобны, если они имеют одинаковую структуру; это означает, что подобные деревья либо оба пусты, либо оба непусты и их левые и правые поддеревья соответственно подобны. Попросту говоря, подобие означает, что графические изображения деревьев T и T' имеют одинаковую "конфигурацию".

Слайд 18






бинарные деревья T и T' эквивалентны, если они подобны и если, кроме того, соответствующие вершины содержат одинаковую информацию.
    Если Info (u) обозначает информацию, содержащуюся в вершине u, то формально деревья эквивалентны тогда и только тогда, когда они:
либо оба пусты,
либо же оба непусты, Info (Корень(T))=Info (Корень(T')) и их левые и правые поддеревья соответственно эквивалентны.
Описание слайда:
бинарные деревья T и T' эквивалентны, если они подобны и если, кроме того, соответствующие вершины содержат одинаковую информацию. Если Info (u) обозначает информацию, содержащуюся в вершине u, то формально деревья эквивалентны тогда и только тогда, когда они: либо оба пусты, либо же оба непусты, Info (Корень(T))=Info (Корень(T')) и их левые и правые поддеревья соответственно эквивалентны.

Слайд 19






Первые два из них не подобны; второе, третье и четвертое деревья подобны, причем второе и четвертое эквивалентны
Описание слайда:
Первые два из них не подобны; второе, третье и четвертое деревья подобны, причем второе и четвертое эквивалентны

Слайд 20





Бинарные деревья поиска
Каждая вершина бинарного дерева является структурой, состоящей из четырех полей:
информационное поле (ключ вершины),
служебное поле (их может быть несколько!),
указатель на левое поддерево,
указатель на правое поддерево.
Описание слайда:
Бинарные деревья поиска Каждая вершина бинарного дерева является структурой, состоящей из четырех полей: информационное поле (ключ вершины), служебное поле (их может быть несколько!), указатель на левое поддерево, указатель на правое поддерево.

Слайд 21






struct node
    {
        int Key; // Ключ вершины.
        int Count; // Счетчик количества вершин с одинаковыми ключами.
        node *Left; // Указатель на "левого" сына.
        node *Right; // Указатель на "правого" сына.
    };
Описание слайда:
struct node { int Key; // Ключ вершины. int Count; // Счетчик количества вершин с одинаковыми ключами. node *Left; // Указатель на "левого" сына. node *Right; // Указатель на "правого" сына. };

Слайд 22





Построение бинарного дерева поиска
Tree - указатель на корень дерева
p - вспомогательный указатель на вершину дерева
Описание слайда:
Построение бинарного дерева поиска Tree - указатель на корень дерева p - вспомогательный указатель на вершину дерева

Слайд 23






 Tree = NULL; //Построение пустого дерева
p = new(node);
    (*p).Key = 100;
 (*p).Count = 1;
    (*p).Left = NULL; 
(*p).Right = NULL;
    Tree = p;
Описание слайда:
Tree = NULL; //Построение пустого дерева p = new(node); (*p).Key = 100; (*p).Count = 1; (*p).Left = NULL; (*p).Right = NULL; Tree = p;

Слайд 24






p = new(node);
    (*p).Key = 50; 
(*p).Count = 1;
    (*p).Left = NULL; 
(*p).Right = NULL;
Описание слайда:
p = new(node); (*p).Key = 50; (*p).Count = 1; (*p).Left = NULL; (*p).Right = NULL;

Слайд 25






(*Tree).Left = p;
Описание слайда:
(*Tree).Left = p;

Слайд 26






p = new(node);
    (*p).Key = 200; 
(*p).Count = 1;
    (*p).Left = NULL; (*p).Right = NULL;
Описание слайда:
p = new(node); (*p).Key = 200; (*p).Count = 1; (*p).Left = NULL; (*p).Right = NULL;

Слайд 27






(*Tree).Right = p;
Описание слайда:
(*Tree).Right = p;

Слайд 28






(*Tree).Count = (*Tree).Count + 1;
Описание слайда:
(*Tree).Count = (*Tree).Count + 1;

Слайд 29






void BuildTree (node **Tree)
// Построение бинарного дерева. 
// *Tree - указатель на корень дерева.
{
  int el;
  *Tree = NULL; // Построено пустое бинарное дерево.
  cout<<"Вводите ключи вершин дерева...\n";
  cin>>el;
  while (el!=0)
    { Search (el,Tree); cin>>el;}
}
Описание слайда:
void BuildTree (node **Tree) // Построение бинарного дерева. // *Tree - указатель на корень дерева. { int el; *Tree = NULL; // Построено пустое бинарное дерево. cout<<"Вводите ключи вершин дерева...\n"; cin>>el; while (el!=0) { Search (el,Tree); cin>>el;} }

Слайд 30





void Search (int x, node **p)
void Search (int x, node **p)
// Поиск вершины с ключом x в дереве со вставкой 
// (рекурсивный алгоритм).
// *p - указатель на корень дерева.
{
  if (*p==NULL)
  { 
// Вершины с ключом x в дереве нет; включить ее.
    *p = new(node);
(**p).Key = x;
 (**p).Count = 1; 
    (**p).Left = (**p).Right = NULL;
  }
  else
 //Поиск места включения вершины.
    if (x<(**p).Key) 
//Включение в левое поддерево.
       Search (x,&((**p).Left)); 
    else if (x>(**p).Key)
 //Включение в правое поддерево.
           Search (x,&((**p).Right)); 
         else (**p).Count = (**p).Count + 1;
}
Описание слайда:
void Search (int x, node **p) void Search (int x, node **p) // Поиск вершины с ключом x в дереве со вставкой // (рекурсивный алгоритм). // *p - указатель на корень дерева. { if (*p==NULL) { // Вершины с ключом x в дереве нет; включить ее. *p = new(node); (**p).Key = x; (**p).Count = 1; (**p).Left = (**p).Right = NULL; } else //Поиск места включения вершины. if (x<(**p).Key) //Включение в левое поддерево. Search (x,&((**p).Left)); else if (x>(**p).Key) //Включение в правое поддерево. Search (x,&((**p).Right)); else (**p).Count = (**p).Count + 1; }

Слайд 31





Анализ алгоpитма поиска с включениями
Теоpема Хопкpофта-Ульмана
Сpеднее число сpавнений, необходимых для вставки n случайных элементов в деpево поиска, пустое вначале, pавно O(nlog2n) для n>=1.
Описание слайда:
Анализ алгоpитма поиска с включениями Теоpема Хопкpофта-Ульмана Сpеднее число сpавнений, необходимых для вставки n случайных элементов в деpево поиска, пустое вначале, pавно O(nlog2n) для n>=1.

Слайд 32





Левосторонний обход бинарного дерева поиска
A B D M N E C
 B D C E R
посетите корень дерева;
обойдите левое поддерево;
обойдите правое поддерево.
Описание слайда:
Левосторонний обход бинарного дерева поиска A B D M N E C B D C E R посетите корень дерева; обойдите левое поддерево; обойдите правое поддерево.

Слайд 33






void ObhodLeft (node **w)
// Левосторонний обход дерева.
// *w - указатель на корень дерева.
{
  if (*w!=NULL)
  { cout<<(**w).Key<<" ";
     ObhodLeft (&((**w).Left));
     ObhodLeft (&((**w).Right)); }
}
Описание слайда:
void ObhodLeft (node **w) // Левосторонний обход дерева. // *w - указатель на корень дерева. { if (*w!=NULL) { cout<<(**w).Key<<" "; ObhodLeft (&((**w).Left)); ObhodLeft (&((**w).Right)); } }

Слайд 34





Концевой обход бинарного дерева поиска
обойдите левое поддерево;
обойдите правое поддерево;
посетите корень дерева.
 M N D E B C A
    D E R C B
Описание слайда:
Концевой обход бинарного дерева поиска обойдите левое поддерево; обойдите правое поддерево; посетите корень дерева. M N D E B C A D E R C B

Слайд 35






void ObhodEnd (node **w)
// Концевой обход дерева.
// *w - указатель на корень дерева.
{
  if (*w!=NULL)
 { ObhodEnd (&((**w).Left)); 
   ObhodEnd (&((**w).Right)); 
   cout<<(**w).Key<<" ";}
}
Описание слайда:
void ObhodEnd (node **w) // Концевой обход дерева. // *w - указатель на корень дерева. { if (*w!=NULL) { ObhodEnd (&((**w).Left)); ObhodEnd (&((**w).Right)); cout<<(**w).Key<<" ";} }

Слайд 36





Обратный обход бинарного дерева поиска
обойдите левое поддерево;
посетите корень дерева;
обойдите правое поддерево.
M D N B E A C
    D B E C R
Описание слайда:
Обратный обход бинарного дерева поиска обойдите левое поддерево; посетите корень дерева; обойдите правое поддерево. M D N B E A C D B E C R

Слайд 37






void ObhodBack (node **w)
// Обратный обход бинарного дерева.
// *w - указатель на корень дерева.
{
  if (*w!=NULL)
  { ObhodBack (&((**w).Left)); 
    cout<<(**w).Key<<" "; 
    ObhodBack (&((**w).Right)); }
}
Описание слайда:
void ObhodBack (node **w) // Обратный обход бинарного дерева. // *w - указатель на корень дерева. { if (*w!=NULL) { ObhodBack (&((**w).Left)); cout<<(**w).Key<<" "; ObhodBack (&((**w).Right)); } }

Слайд 38





Вывод бинарного дерева поиска
void Vyvod (node **w,int l)
// Изображение дерева w на экране дисплея.
// (рекурсивный алгоритм).
// *w - указатель на корень дерева.
{
  int i;
  if (*w!=NULL)
  { Vyvod (&((**w).Right),l+1); 
    for (i=1; i<=l; i++) cout<<" "; 
    cout<<(**w).Key<<endl; 
    Vyvod (&((**w).Left),l+1); }
}
Описание слайда:
Вывод бинарного дерева поиска void Vyvod (node **w,int l) // Изображение дерева w на экране дисплея. // (рекурсивный алгоритм). // *w - указатель на корень дерева. { int i; if (*w!=NULL) { Vyvod (&((**w).Right),l+1); for (i=1; i<=l; i++) cout<<" "; cout<<(**w).Key<<endl; Vyvod (&((**w).Left),l+1); } }

Слайд 39





Построение бинарного дерева (нерекурсивный алгоритм)
 Tree = new(node);
    (*Tree).Right = NULL;
    p2 = Tree;
    p1 = (*p2).Right;
Описание слайда:
Построение бинарного дерева (нерекурсивный алгоритм) Tree = new(node); (*Tree).Right = NULL; p2 = Tree; p1 = (*p2).Right;

Слайд 40






p1 = new(node);
    (*p1).Key = Элем1; 
(*p1).Left = (*p1).Right = NULL;
    (*p1).Count = 1;
Описание слайда:
p1 = new(node); (*p1).Key = Элем1; (*p1).Left = (*p1).Right = NULL; (*p1).Count = 1;

Слайд 41






void TreeSearch (node **Tree,int el)
// Поиск вершины с информационным полем el в дереве
// с последующим включением.
// *Tree - указатель на корень дерева.
{
  node *p1;
  node *p2; // Указатель p2 "опережает" указатель p1.
  int d; // Флаг для распознавания поддеревьев.
  p2 = *Tree; p1 = (*p2).Right;
  d = 1; // Флаг правого поддерева.
  while (p1!=NULL && d!=0)
  { p2 = p1; 
    if (el<(*p1).Key) { p1 = (*p1).Left; d = -1; //Флаг левого поддерева. }
    else 
      if (el>(*p1).Key) { p1 = (*p1).Right; d = 1; } 
      else d = 0; }
    if (d==0) (*p1).Count = (*p1).Count + 1;
    else
      { p1 = new(node);
        (*p1).Key = el; (*p1).Left = (*p1).Right = NULL; (*p1).Count = 1; 
        if (d<0) (*p2).Left = p1; else (*p2).Right = p1;}
}
Описание слайда:
void TreeSearch (node **Tree,int el) // Поиск вершины с информационным полем el в дереве // с последующим включением. // *Tree - указатель на корень дерева. { node *p1; node *p2; // Указатель p2 "опережает" указатель p1. int d; // Флаг для распознавания поддеревьев. p2 = *Tree; p1 = (*p2).Right; d = 1; // Флаг правого поддерева. while (p1!=NULL && d!=0) { p2 = p1; if (el<(*p1).Key) { p1 = (*p1).Left; d = -1; //Флаг левого поддерева. } else if (el>(*p1).Key) { p1 = (*p1).Right; d = 1; } else d = 0; } if (d==0) (*p1).Count = (*p1).Count + 1; else { p1 = new(node); (*p1).Key = el; (*p1).Left = (*p1).Right = NULL; (*p1).Count = 1; if (d<0) (*p2).Left = p1; else (*p2).Right = p1;} }

Слайд 42





Изображение бинарного дерева (нерекурсивный алгоритм)
 struct no
    {
      no *sled;   // Указатель на вершину.
      node *elem; // Информационное поле.
      int ch;     // Уровень вершины.
    }
Описание слайда:
Изображение бинарного дерева (нерекурсивный алгоритм) struct no { no *sled; // Указатель на вершину. node *elem; // Информационное поле. int ch; // Уровень вершины. }

Слайд 43






Создание БД
Поиск по БД
Левосторонний обход БД
Обратный обход БД
Концевой обход БД
Описание слайда:
Создание БД Поиск по БД Левосторонний обход БД Обратный обход БД Концевой обход БД



Теги CPP
Похожие презентации
Mypresentation.ru
Загрузить презентацию