/*
樹的定義:
由乙個或多個(n >= 0)結點組成的有限集合t,有且僅有乙個結點稱為根(root),當 n>1時,其餘的結點分為m(m > 0)個相互不相交的有限集合t1, t2, ..., tm。每個集合本身又是棵樹,被稱作這個根的子樹。
樹的結構特點:
1.非線性結構,有乙個直接前驅,但可能有多個直接後繼(1:n)
2.樹的定義具有遞迴行,樹中還有樹。
3.樹可以為空,即結點個數為0.
若干術語:
根->即根結點
葉子->即終端節點(沒有後繼)
森林->指m棵不相交的樹的集合
有序樹->結點各子樹從左至右有序,不能互換(左為第一)
無序樹->結點各子樹可互換位置。
雙親->即上層的那個結點(直接前驅)parent
孩子->即下層結點的子樹(直接後繼)child
兄弟->同一雙親下的同層結點(孩子之間互稱兄弟)sibling
堂兄弟->即雙親位於同一層的結點(但並非同一雙親)cousin
祖先->即從根到該結點所經分支的所有結點
結點->即樹的資料元素
結點的度->結點掛接的子樹數(有幾個直接後繼就是幾度)。
結點的層次->從根到該結點的層數(根結點算第一層)
終端結點->即度為0 的結點, 即葉子
分支結點->除樹根以為的結點(也稱為內部結點)
樹的度->所有結點度中的最大值(max(各結點的度))
樹的深度(或者高度)->指所有結點中最大的層數(max(各結點的層次))
三種表示樹的方法:
雙親表示法
struct node
; 左孩子右兄弟表示法:
孩子表示法:
struct childnode
;*//*二叉樹的遍歷:
遍歷定義:
指按某條搜尋路線遍訪每個節點且不重複(又稱周遊)。
遍歷用途:
它是樹結構插入、刪除、修改、查詢和排序運算的前提,是二叉樹一切運算的基礎和核心。
遍歷的方法:
牢記一種約定,對每個結點的檢視都是"先左後右"。
限定先左後右,樹的遍歷有三種實現方案:
dlr ldr lrd
都要遍歷到底在說
前(根)序遍歷 中(根)序遍歷 後(根)序遍歷
dlr->先序遍歷,即先根在左在右
ldr->中序遍歷,即先左在根在右
lrd->後序遍歷,即先左在右在根
*/# include # include # include //二叉樹結點
typedef struct binarynode
binarynode;
int num = 0;
void caculateleafnum(binarynode* root)
if(root->lchild == null && root->rchild == null)
//左子樹葉子結點的數目
caculateleafnum(root->lchild);
//右子樹葉子結點的數目
caculateleafnum(root->rchild);
}void crestbinarytree()
; binarynode node2 = ;
binarynode node3 = ;
binarynode node4 = ;
binarynode node5 = ;
binarynode node6 = ;
binarynode node7 = ;
binarynode node8 = ;
//建立結點關係
node1.lchild = &node2;
node1.rchild = &node6;
node2.rchild = &node3;
node3.lchild = &node4;
node3.rchild = &node5;
node6.rchild = &node7;
node7.lchild = &node8;
caculateleafnum(&node1);
}int main(int argc, char *argv)
二叉樹葉子結點個數和第K層結點的個數
求二叉樹葉子結點的個數 1.如果根節點為null時,則是空樹,返回0 2.根節點不為空時,如果根節點的左右子樹均為空,則該二叉樹中只有乙個節點,即返回1 3.葉子節點的個數 左子樹葉子節點數 右子樹葉子節點數 如下 int getnodeyezi node root 葉子節點的個數 if root ...
java求二叉樹葉子節點個數的函式
二叉樹的特性 1.樹的每個節點最多只能有兩個子節點 稱為左子樹與右子樹 2.左子樹上所有結點的值均小於或等於它的根結點的值。3.右子樹上所有結點的值均大於或等於它的根結點的值。4.左 右子樹也分別為二叉排序樹。葉子節點的定義 如果乙個節點既沒有左孩子,也沒有右孩子,則該節點為葉子節點。package...
二叉樹葉子個數
資料結構實驗之二叉樹七 葉子問題 time limit 1000ms memory limit 65536k 題目描述 已知乙個按先序輸入的字串行,如abd,eg,cf,其中,表示空結點 請建立該二叉樹並按從上到下從左到右的順序輸出該二叉樹的所有葉子結點。輸入輸入資料有多行,每一行是乙個長度小於50...