表示法: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 樹中的乙個結點擁有的子樹數...