資料結構 樹的基本概念及二叉樹的基本操作

2021-10-24 15:52:56 字數 1584 閱讀 9430

樹被定義為由若干個結點和若干條邊組成的資料結構

樹的基本概念和性質:

1、樹可以沒有結點,這種情況下把樹稱為空樹(empty tree)

2、樹的層次從根節點開始算起,即根為第一層,其子結點為第二層,以此類推

3、把結點的子樹棵樹稱為結點的度,而結點中最大的度稱為樹的度

4、由於一條邊連線兩個結點,且樹中不存在環,因此對n個結點的樹,邊數一定是n-1,且滿足連通、邊數等於頂點數減1的結構一定是一棵樹

5、葉子結點被定義為度為0的結點,因此當樹中只有乙個結點時,根結點也算是葉子結點

6、結點的深度是指從根結點開始自頂向下逐層累加至該結點時的深度值。結點的高度是指從底層葉子結點開始自底向上逐層增加至該結點時的高度值。

7、多棵樹組合在一起稱為森林

二叉樹的遞迴定義:要麼沒有根結點,是一棵空樹,要麼由根節點、左子樹、右子樹組成,且左子樹和右子樹都是二叉樹。

兩種特殊的二叉樹:

1、滿二叉樹:即每一層的結點數都是該層的最大結點數(2n-1),總結點樹為:2n-1

2、完全二叉樹:除了葉子結點之外,每乙個結點的度數都為2,即都有兩個子結點

struct node 

;

node*

newnode

(int v)

void

search

(node *root,

int x,

int newdata)

search

(root-

>lchild, x, newdata)

;search

(root-

>rchild, x, newdata)

;}

二叉樹的遍歷是指通過一定順序訪問二叉樹的所有結點,遍歷方法一般有四種:先序遍歷、中序遍歷、後序遍歷和層序遍歷。

1、先序遍歷

對先序遍歷來說,總是先訪問根結點root,然後才去訪問左子樹和右子樹,因此其遍歷順序為根結點->左子樹->右子樹。

void

preorder

(node* root)

2、中序遍歷

對先序遍歷來說,總是先訪問根結點root,然後才去訪問左子樹和右子樹,因此其遍歷順序為左子樹->根結點->右子樹。

void

inorder

(node* root)

3、後序遍歷

對先序遍歷來說,總是先訪問根結點root,然後才去訪問左子樹和右子樹,因此其遍歷順序為左子樹->右子樹->根結點。

void

postorder

(node* root)

4、層序遍歷

層序遍歷是指按層次順序從根結點開始從上往下逐層遍歷,對每一層進行從左往右的遍歷。其過程就相當於是對二叉樹從根結點開始的廣度優先搜尋(bfs)

void

layerorder

(node* root)

}

二叉樹基本概念及性質

二叉樹基本概念 在電腦科學中,二叉樹是每個節點最多有兩個子樹的樹結構。通常子樹被稱作 左子樹 left subtree 和 右子樹 right subtree 二叉樹常被用於實現二叉查詢樹和二叉 堆。二叉樹的每個結點至多只有二棵子樹 不存在度大於2的結點 二叉樹的子樹有左右之分,次序不能顛倒。二叉樹...

資料結構 樹和二叉樹的基本概念

樹是n個結點的有限集合,n 0 時,稱為空樹。在任意空樹中應滿足 有且僅有乙個特定的稱為根的結點 當 n 1時,其餘結點可分為 m 個互不相交的有限集合,其中每個集合本身又是一棵樹,並且成為根節點的子樹。樹的定義是遞迴的,也是一種遞迴的資料結構。有兩個特點 樹的根節點沒有前驅結點,除根節點外的所有結...

二叉樹的基本概念及順序結構的實現

一.樹的概念 1.樹的概念 樹是一種非線性的資料結構,它是由n個有限節點組成的乙個具有層次關係的結合 2.樹的特點 每個節點有0個或多個子節點 沒有父節點的節點為根節點 每個非根節點有且只有乙個父節點,每個子節點可以分為多個不相交的子樹 3.關於樹的幾個基本概念 1 節點的度 乙個節點含有的子樹的個...