建立一顆多叉樹

2021-07-10 14:27:24 字數 891 閱讀 4133

多叉樹的建立是很複雜的,因為分支數目不確定,但是我們可以知道多叉樹和二叉樹其實是可以轉化的,我們可以將其轉化為二叉樹。下面就是使用「子女-兄弟鏈法」建立的一顆樹。

#pragma once

#includeusing namespace std;

templateclass tree;

templateclass treenode

treenode(type d, treenode* l = null, treenode* c = null) :data(d), nextsibling(l), firstchild(c)

{} ~treenode()

{}private:

type data;

treenode* firstchild;

treenode* nextsibling;

};templateclass tree

public:

void create()

void show()

protected:

void create(treenode*& t)

else

}bool empty()

void preoder(treenode*& t) }

private:

treenode*root;

type refvalue;

};

建立一顆多叉樹有很多種方法,我這裡選擇的是「子女-兄弟鏈「法,上面是實現:

這裡是先序建立的//rad#e##bc#f##ghk#####

樹的大致形態如下:

建立一顆敗者樹

敗者樹是電腦科學學科裡的一種資料結構。可用於外部排序中提高效率。敗者樹實際上是一棵完全二叉樹,可以看做是勝者樹的一種變體。敗者樹簡化了重構。敗者樹的重構只是與該結點的父結點的記錄有關,而勝者樹的重構還與該結點的兄弟結點有關。敗者樹中每個葉子結點存放各歸併段在歸併過程中當前參加比較的記錄,每個非葉子結...

用檔案建立一顆二叉樹

本次使用到的類有 fstream類 string類 include fstream include string 首先建立乙個txt文字 這代表了一棵二叉樹 如圖 三個符號分別對應 資料 左孩子 右孩子 存在為1,不存在為0 於是需要兩個函式。第乙個把檔案轉化為陣列,第二個把陣列轉化為二叉樹。在這裡...

驗證一顆二叉搜尋樹

給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 節點的左子樹只包含小於當前節點的數。節點的右子樹只包含大於當前節點的數。所有左子樹和右子樹自身必須也是二叉搜尋樹。這裡有一種錯誤的思路 判斷當前節點大於左節點,小於右節點,以此遞迴下去,當不滿足上面條件就返回false...