C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

ツリーの奇数レベルのみを印刷するC++プログラム


これは、ツリーの奇数レベルのみを出力するC++プログラムです。

アルゴリズム

擬似コードを使用した構造と関数:

Begin
   Declare nod as a structure.
      Declare d of integer datatype.
      Declare a pointer l against struct nod.
      Declare a pointer l against struct nod.
   Call function struct nod* newNod(int d).
   Declare struct nod* newNod(int d) function.
      Declare a pointer node against struct node.
      Initialize node = (struct nod*) malloc(sizeof(struct nod)).
      node->d = d
      node->l = NULL
      node->r = NULL
      return node.
   Call function printLevel(struct nod* root, int lvl).
   Declare function printLevel(struct nod* root, int lvl).
      if (root == NULL) then
         return
      if (lvl == 1) then
         print the values of root->d
      else if (lvl > 1)
         call printLevel(root->l, lvl - 1)
         printLevel(root->r, lvl - 1)
   Call function height(struct nod* node).
   Declare function height(struct nod* node) to compute the height of tree.
      if (node == NULL) then
         return 0
      else
         int lhght = height(node->l);
         int rhght = height(node->r);
      if (lhght > rhght) then
         return (lhght + 1)
      else
         return (rhght + 1)
   Declare function printLevelOrder(struct nod* root).
      declare h of the integer datatype.
         initialize h = height(root).
      declare i of the integer datatype.
      for (i = 1; i <= h; i+=2)
      call function printLevel(root, i).
   insert values in the tree.
   Print “Odd numbered Level Order traversal of binary tree is”.
   Call function printLevelOrder(root).
End
を呼び出します

#include <iostream>
#include<stdlib.h>
using namespace std;
struct nod {
   int d;
   struct nod* l;
   struct nod* r;
};
struct nod* newNod(int d);
struct nod* newNod(int d) {
   struct nod* node = (struct nod*) malloc(sizeof(struct nod));
   node->d = d;
   node->l = NULL;
   node->r = NULL;
   return (node);
}
void printLevel(struct nod* root, int lvl);
void printLevel(struct nod* root, int lvl) {
   if (root == NULL)
      return;
   if (lvl == 1)
      printf("%d ", root->d);
   else if (lvl > 1) {
      printLevel(root->l, lvl - 1);
      printLevel(root->r, lvl - 1);
   }
}
int height(struct nod* node);
int height(struct nod* node) {
   if (node == NULL)
      return 0;
   else {
      int lhght = height(node->l);
      int rhght = height(node->r);
      if (lhght > rhght)
         return (lhght + 1);
      else
         return (rhght + 1);
   }
}
void printLevelOrder(struct nod* root) {
   int h = height(root);
   int i;
   for (i = 1; i <= h; i+=2)
      printLevel(root, i);
}
int main() {
   struct nod *root = newNod(7);
   root->l = newNod(6);
   root->r = newNod(4);
   root->l->l = newNod(3);
   root->l->r = newNod(5);
   root->r->l = newNod(2);
   root->r->r = newNod(1);
   cout<<"Odd numbered Level Order traversal of binary tree is \n";
   printLevelOrder(root);
   return 0;
}

出力

Odd numbered Level Order traversal of binary tree is
7 3 5 2 1

  1. C++プログラミングのバイナリツリー内のすべてのノードの印刷レベル。

    二分木が与えられた場合、タスクは、1からnまでのノードに格納されているすべてのキーに関連付けられたレベルを出力することです 上記のツリーでは、ノードは- 10 at level 1 3 and 211 at level 2 140, 162, 100 and 146 at level 3 キーが与えられると、プログラムはその特定のキーのレベルを出力する必要があります。 例 Input: 10 3 211 140 162 100 146 Output:    level of 10 is 1    Level of 3 is 2   &

  2. AVLツリーを実装するためのC++プログラム

    AVLツリーは自己平衡二分探索木であり、左右のサブツリーの高さの差がすべてのノードで複数になることはありません。 ツリーの回転は、AVLツリーの要素の順序を妨げることなく構造を変更する操作です。ツリー内で1つのノードを上に移動し、1つのノードを下に移動します。これは、ツリーの形状を変更したり、小さいサブツリーを下に移動したり、大きいサブツリーを上に移動したりして高さを低くしたりするために使用され、多くのツリー操作のパフォーマンスが向上します。回転の方向は、木のノードが移動する側に依存しますが、他の人は、どの子がルートの場所をとるかに依存すると言います。これは、AVLツリーを実装するためのC+