Másolás fa

b = GetTreeNode ( 'B', NULL, d);

c = GetTreeNode ( 'C', e, NULL);

a = GetTreeNode ( 'A', B, C);

Először létrehozunk egy fia D, amelyet ezután csatlakozik a szülő B, amikor létrehoz egy csomópontot. Alkotó csomópont E és C csatlakozik a szülei a születési időt (vagy teremtés) az utóbbi. Végül, létrehoz egy gyökér, és csatlakozik az ő fiai a B és C

Fa algoritmus másolás kezdődik a gyökér és elsősorban konstrukciók bal részfa a csomópontra, majd - a jobb részfa. Csak azután, hogy egy új csomópont. Ugyanez a rekurzív folyamat ismétlődik minden egyes csomóponthoz. Ennek megfelelően, a csomópont a forrás fa t hoz létre egy új csomópont mutatók és newlptr newrptr.

Az ellenkező átviteli eljárás Sons látogatott, mielőtt szüleik. Ennek eredményeképpen egy új fát hoz létre részfák megfelelő T-> Bal () és a t-> Jobb (). Sons csatlakozzon szüleik idején létrehozása az utóbbi.

// létrehozni szülő, és csatolja hozzá az ő fiai

newnode = GetTreeNode (t-> adatok, newlptr, newrptr);

A lényege a látogató csomópont t a forrásfába teremt egy új csomópont a fa-két példányban.

TreeNode * Root1, * root2; // állapítsa két fa

MakeCharTree (root1, 0); // root1 jelzi Tree_0

Pass leszármazottai egy csomópont egy, a bal oldali részfa (B csomópont, majd a D csomópontot, amely egy jobb részfáját B csomópont). Hozzon létre egy új csomópont adatokkal megegyező D, a bal és a jobb mutatókat egyenlő NULL.

Node B telt fia. Hozzon létre egy új csomópont adatai megegyeznek a B, a bal index egyenlő NULL, a jobb mutatót a másolatot a csomópont D.

Mivel csomópont bal részfa elkészült, kezdjük a jobb részfa folyosón, és eléri a csomópont E. hozzon létre egy új csomópont az adatokat a csomópont E és a mutató területeken egyenlő NULL.

A feldolgozás után, E megy a szüleinek, hogy hozzon létre egy új site adataival C. A jobb mezőben, hogy a mutató NULL, és a bal mutató rendelhet linket egy példányát a gyermek csomópont E.

// Létrehozunk egy példányban a fa t, és visszatér a gyökere egy új fát

sablon

// Változó newnode jelzi az új csomópont jön létre

// keresztül Hívás GetTreeNode illeszthetők és

// a jövőben az új fa.

// csomópont és paraméterként adja át GetTreeNode

TreeNode * Newlptr, * newrptr, * newnode;

// megállítani az áramlást, ha a rekurzív

// csomópontja t. minden egyes csomópontnál a fa funkció

// Létrehozunk egy másolatot. Különben visszaküldi

// és leteszi őt fia.

if (t-> Bal ()! = NULL)

if (t-> Jobb ()! = NULL)

// egy új fa alulról felfelé, ami az első

// két fia, majd a szülő

newnode = GetTreeNode (t-> adatok, newlptr, newrptr);

// visszatér egy pointert az újonnan létrehozott fa

Kapcsolódó cikkek