樹和二叉樹

2022-06-21 10:42:09 字數 2974 閱讀 4252

不同於佇列、棧等一對一的資料結構,樹是一對多的資料結構。樹(tree)是n(n>=0)各節點的有限集。當n=0,為空樹。

在任意一顆非空樹中:有且只有乙個特定的結點稱為:根(root)

當n>1時,其餘結點可分為m(m>0)個互不相交的有限集t1、t2、...tm。其中每乙個樹本身又是一棵樹,並且稱為:子樹。

兩點注意:

n>0時候,根節點唯一。

m>0時候,子樹個數雖然沒有限制。但是他們不會相交(不會形成類似環狀的形狀)

結點:

度:結點擁有的子樹個數稱之為結點的度。整棵樹的度:各結點度的值的最大值。

度為0的結點稱為:葉節點或者終端結點

度不為0的結點稱為:分支結點

度不為0且不是根節點的結點稱為:內部結點。

(附截圖)

結點關係

child:結點子樹的根;parent:相應的,該結點就是parent

sibling(兄弟):統一parent的child之間的關係

祖先結點:從根到該結點所經過的分支上的所有結點。

深度或高度:

樹中結點的最大層次稱為輸的深度或高度。下面截圖就是高度和度均為3的一棵樹:

有序樹和無序樹:

如果將樹中結點的各子樹看成從左到右有次序的,不能互換的,就是有序樹;否則就是無序樹。

森林:

是m>0棵互不相交的樹的結合。對樹中每個結點,其子樹的集合就是森立。

特點:二叉樹的度<=2。

二叉樹是有序樹。

截圖

左斜樹:所有結點都只有左子樹的二叉樹;

右斜樹:所有結點都只有右子樹的二叉樹;截圖

所有分支結點的度為2;

所有葉子結點只能分布在最下層上;

同樣深度的二叉樹中,滿二叉樹的結點數最多,葉子結點數最多;

所有葉子結點只能出現在最下兩層

若結點度為1,則該結點只有左子樹,不存在只有右子樹的情況

結點分配 先左後右

通過截圖1和截圖2看一下滿二叉樹和完全二叉樹的區別:

csdn位址 :

也可以致信進行交流 : [email protected]

有三種遍歷方式。命名的根據是按照根節點被遍歷的順序。前序、中序 || 後序、中序 可以確定乙個二叉樹。但是前序+後序不可以確定一顆二叉樹。

前序:先訪問根結點 -> 遍歷左子樹 -> 遍歷右子樹;先訪問根結點

中序:遍歷左子樹 -> 訪問根結點 -> 遍歷右子樹;中間訪問根結點

後序:遍歷左子樹 -> 遍歷右子樹 -> 後訪問根結點;後訪問根結點

層序:自上而下,從左到右逐層訪問結點;

下面截圖展現了4中遍歷方式。

#include#includeusing namespace std;

typedef char elemtype;

struct bintree;

//按照前序遍歷建立二叉樹。注意輸入的順序也必須得是前序遍歷的順序。

void createbintree(bintree *&t)

else

t = null;//空格代表是空子樹

}//遞迴查詢二叉樹的深度

int bintreedepth(bintree *t)

} //按照前序遍歷二叉樹

//中序和後序只需要改變if(t)條件中語句順序

void preorderbintree(bintree *t,int level)

}//清空二叉樹。注意if中自呼叫和delete語句的順序

void clearbintree(bintree *&t)

}//查詢含有對應資料的結點。返回值是結點的指標

bintree* findnode(bintree *t ,elemtype data)

} //輸入為(注意空格):ab d ce

int main(){

int level = 1;

bintree *t = null;

createbintree(t) ;

preorderbintree(t,level);

cout<

二叉樹 滿二叉樹和完全二叉樹

二叉樹是一種很重要的非線性資料結構,它是樹結構的一種重要的型別 它不是樹結構的特殊情況 其特徵是每個節點最多有兩個子樹。二叉樹的特點 二叉樹每個結點最多有 2個子結點,樹則無此限制 二叉樹中 結點的子樹 分成左子樹和右子樹,即使某結點只有一棵子樹,也要指明該子樹是左子樹,還是右子樹,就是說 二叉樹是...

樹 二叉樹 滿二叉樹 完全二叉樹 完滿二叉樹

目錄名稱作用根 樹的頂端結點 孩子當遠離根 root 的時候,直接連線到另外乙個結點的結點被稱之為孩子 child 雙親相應地,另外乙個結點稱為孩子 child 的雙親 parent 兄弟具有同乙個雙親 parent 的孩子 child 之間互稱為兄弟 sibling 祖先結點的祖先 ancesto...

二叉樹和完全二叉樹

二叉樹規律 假設根節點的高度為0 二叉樹是每個節點至多只有兩個節點的樹 深度為i所在的層至多有 2 i個節點 高度為k的二叉樹至多有2 k 1 1個節點 n0表示度為0的節點,n2表示度為2的節點,存在n0 n2 1 對所有樹有 節點個數 邊數 1 完全二叉樹規律 節點數為n的完全二叉樹,其高度為 ...