資料結構 之樹的介紹

2021-08-28 10:53:24 字數 1326 閱讀 5741

目錄

二叉樹滿二叉樹

完全二叉樹

二叉樹的鏈式儲存

二叉樹的遍歷

樹的定義:一棵樹是若干個結點的集合,它由唯一的根結點與若干互不相交的子樹組成。其中每棵子樹也是由唯一的根結點與若干個互不相干的子樹構成。樹的定義是遞迴的。

結點的度:結點擁有子樹的個數

葉結點:結點度為零的結點

二叉樹:屬於樹,且滿足:1)每個節點至多兩個子樹。2)二叉樹是有序的,左右子樹不能顛倒。

性質:1)二叉樹第n層結點數至多為

滿二叉樹:屬於二叉樹,且滿足:1)除了葉結點,其他結點均有左右孩子。2)葉結點都在二叉樹的最底層,且葉結點數為該層的最大值。如下則為乙個滿二叉樹例子:

完全二叉樹:屬於二叉樹,並且滿足,如果對其結點按照「從上往下,從左向右」編號後與滿二叉樹的結點編號相同。則屬於完全二叉樹,否則為非完全二叉樹。

ps:有關二叉樹結點的運算,需要知道二叉樹的總結點數=總分支數+1,除了根結點,其他每個結點都對應唯一乙個指向自己的分支。

left

valright

typedef struct btnodebtnode,*bitnode
先序遍歷(訪問根結點→先序遍歷左子樹→先序遍歷右子樹)

void preorder(btnode *t)

}

中序遍歷(中序遍歷左子樹→訪問根結點→中序遍歷右子樹)

void preorder(btnode *t)

}

後序遍歷(後序遍歷左子樹→後序遍歷右子樹→訪問根結點)

void preorder(btnode *t)

}

層次遍歷(第一步:初始化佇列,將根結點入隊。第二步:若佇列不空,則佇列頭結點p出隊,若p左孩子不空則入隊,右孩子不空則入隊。第三步:迴圈第二步,隊列為空結束)

void levelorder(btnode *t)

}

資料結構之 樹

1.雙親表示法 下標 資料 parentid 2.孩子表示法 data child1 child2 child3 3.雙親孩子表示法 下標 parentid firstchildid secondchildid 節點 下標 next 頁的話next應該是null 4.孩子兄弟表示法 data 第一次...

資料結構之樹

一 樹的基本概念 樹 tree 是元素的集合,樹有多個節點可以儲存元素 二 二叉樹 每個節點最多有兩個子節點的樹稱為二叉樹 常用來做二分查詢 binary search 等 三 b樹 即二叉搜尋樹 binary search tree 是一種特殊形態的二叉樹 1 所有節點最多擁有2個子節點 2 所有...

資料結構之樹

樹是節點的有限集合.度 a的度是3 b的度是2 d的度是2 c的度為0 當前節點的直接分支 葉子 終端節點就是葉子 e f g h c 根 非終端節點就是根 a b d 有序樹 如果e f不可以隨意換順序 就是有序樹 無序樹 如果 e f可以隨意換順序而且不影響邏輯 祖先 對e來說 b,a都是祖先 ...