樹的基本知識

2021-06-06 07:19:35 字數 1938 閱讀 8393

表示法:1. 樹形 2. 文氏圖 3. 凹入 4. 括號

結點的度與樹的度 m次樹: 結點子樹的個數

非終端節點,分支結點,葉節點

路徑與路徑長度:

ki,ki1,ki2,…,kj, 結點數目減1(分支數目)

孩子結點,雙親結點,兄弟結點

結點的層次和樹的高度:根節點為第一層,樹的高度。

森林:

n(n

0)

個互不相交的樹的集合,n可以為1?

樹中的結點數等於所有結點的度數加

1

度為

m

的樹中第

i

層上至多有

m

(i-1)

個結點

,

這裡應有

i

1

性質1 非空二叉樹上葉結點數等於雙分支結點數加1。

證明:設二叉樹上葉結點數為n0,單分支結點數為n1,雙分支結點數為n2,則總結點數=n0+n1+n2。在一棵二叉樹中,所有結點的分支數(即度數)應等於單分支結點數加上雙分支結點數的2倍,即總的分支數=n1+2n2。

由於二叉樹中除根結點以外,每個結點都有惟一的乙個分支指向它,因此二叉樹中有:總的分支數=總結點數-1。

由上述三個等式可得:n1+2n2=n0+n1+n2-1

即:n0=n2+1

轉換 以後來。

void levelorder(btnode* tree)

if (tmp->rchild != null)

}}

// 二叉樹的基本運算

void createbtnode(btnode* tree, string* str);

btnode* findnode(btnode* tree, char x);

btnode* (btnode* p); btnode* rchildnode(btnode* p);

int btnodedepth(btnode* tree);

void dispbtnode(btnode* tree);

//在指定樹中查詢指定樹節點的層次。

int level(const btnode* tree, const btnode* node)

else if (tree == node)

else

else if (level(tree->rchild, node))

else

}}void level(const btnode* tree, const btnode* node, int &h, int lh) //lh: lasthigh.

else if (tree == node)

else }

}

樹 基本知識

自由樹 自由樹是乙個連通,無迴路的無向圖.顯然樹是圖的一種.如果乙個無向圖雖然無迴路,但是可能非聯通,那麼這個圖成為森林.森林可以調整為一顆二叉樹 左兒子,右兄弟 森林是m m 0 棵互不相交的樹的集合。令g v,e 為乙個無向圖.則以下6點是等價的.1 g是自由樹 2 g中任意兩個頂點由唯一一條簡...

樹的基本知識

樹 樹是一些節點的集合。這個集合可以是空集 若集合不是空集,則樹由根節點r以及0個或多個子樹組成。邊 兩個節點之間的連線就是邊。樹葉 沒有兒子的節點稱為樹葉。節點的度 節點擁有的子樹數稱為節點的度。度 節點的度的最大值稱為樹的度。兄弟 具有相同父親節點的節點稱為兄弟。路徑 從節點n1到節點nk的路徑...

樹的基本知識

樹是由乙個或多個結點組成的有限集合 t 其中 1 乙個特定的結點稱為該樹的根 root 結點 2 結點之外的其餘結點可分為 m m 0 個互不相交的有限集合 t 1 t 2 t m 且其中每乙個集合本身又是一棵樹,稱之為根的子樹 subtree 1 結點的度 degree 樹中的乙個結點擁有的子樹數...