实现三叉树的C ++程序

三叉树是一种树数据结构,其中每个节点最多具有三个子节点,通常表示为“左”,“中”和“右”。在此树中,具有子节点的节点是父节点,子节点可能包含对其父节点的引用。这是实现三叉树和遍历该树的C ++程序

算法

Begin

   Declare function insert(struct nod** root, char *w)

      if (!(*root)) then

         *root = newnod(*w);

         if ((*w) < (*root)->d) then

            insert(&( (*root)->l ), w);

         else if ((*w) > (*root)->d) then

            insert(&( (*root)->r ), w);

         else if (*(w+1))

            insert(&( (*root)->eq ), w+1);

      else

         (*root)->EndOfString = 1;

End.

对于遍历树:

Begin

   Declare function traverseTTtil(struct nod* root, char* buffer,

   int depth)

      if (root) then

         traverseTTtil(root->l, buffer, depth)

            buffer[depth] = root->d

            if (root->EndOfString) then

               buffer[depth+1] = '\0'

               print the value of buffer.

            traverseTTtil(root->eq, buffer, depth + 1);

            traverseTTtil(root->r, buffer, depth);

End.

示例

#include<stdlib.h>

#include<iostream>

using namespace std;

struct nod {

   char d;

   unsigned End.

   fString: 1;

   struct nod *l, *eq, *r;

}*t = NULL;

struct nod* newnod(char d) {

   t = new nod;

   t->d = d;

   t->End.

   fString = 0;

   t->l = t->eq = t->r = NULL;

   return t;

}

void insert(struct nod** root, char *w) {

   if (!(*root))

      *root = newnod(*w);

   if ((*w) < (*root)->d)

      insert(&( (*root)->l ), w);

   else if ((*w) > (*root)->d)

      insert(&( (*root)->r ), w);

   else {

      if (*(w+1))

         insert(&( (*root)->eq ), w+1);

      else

         (*root)->End.

      fString = 1;

   }

}

void traverseTTtil(struct nod* root, char* buffer, int depth) {

   if (root) {

      traverseTTtil(root->l, buffer, depth);

      buffer[depth] = root->d;

      if (root->End. String) {

         buffer[depth+1] = '\0';

         cout<<buffer<<endl;

      }

      traverseTTtil(root->eq, buffer, depth + 1);

      traverseTTtil(root->r, buffer, depth);

   }

}

void traverseTT(struct nod* root) {

   char buffer[50];

   traverseTTtil(root, buffer, 0);

}

int main() {

   struct nod *root = NULL;

   insert(&root, "mat");

   insert(&root, "bat");

   insert(&root, "hat");

   insert(&root, "rat");

   cout<<"Following is traversal of ternary tree\n";

   traverseTT(root);

}

输出结果

Following is traversal of ternary tree

bat

hat

mat

rat

以上是 实现三叉树的C ++程序 的全部内容, 来源链接: utcz.com/z/348926.html

回到顶部