動手實現 資料結構 之 「二叉樹」

2021-07-02 08:09:02 字數 2234 閱讀 4462

使用 c 語言的方式實現,一棵二叉排序樹

// 一棵典型的二叉排序數,每個節點存在 左子節點 < 節點本身 < 右子節點

52 7

1 3 6 8

// 二叉排序樹的插入操作

// 插入乙個節點4, 先和5比較發現比5小,就在5的左子樹中繼續查詢要插入的位置,

// 將要插入的4 與 節點2比較發現比2大,就在2的右子樹中繼續查詢要插入的位置,

// 將要插入的4 與 節點3比較發現比3大,且3的右子樹為空,所以要插入的位置就為3的右子樹,

5<<

2<< 7

1 3<< 6 8

4 // 二叉排序樹的刪除操作

// 當刪除的元素為3時,3這個節點只有右子樹而沒有左子樹,我們只需要將 3的右子樹直接連線到父節點2即可

52 7

1 4<< 6 8

// 當刪除的元素為5時,我們只需要將右子樹最小的元素複製給5這個要刪除的節點,

6<<

2 7

1 4 6 8

// 然後再刪除右子樹的最小節點即可

62 7

1 4 << 8

#include #include struct node ;

struct binarytree ;

//-------------------------------init--------------------------------------

void initbinarytree(struct binarytree * tree)

//-------------------------------destroy------------------------------------

void destroynode(struct node * node)

void destroybinarytree(struct binarytree * tree)

//-------------------------------searchtree------------------------------------

struct node * searchtree(struct binarytree * tree, int data) else if(data < p->data) else

}// 如果未找到節點就返回,節點應該插入位置的父節點

return p;

}//-------------------------------insert------------------------------------

void insert(struct binarytree * tree, int data) else else

}}//-------------------------------erase------------------------------------

void erase(struct binarytree * tree, int data) else

free(p);

} else if(p->left == null) else

free(p);

} else else

free(pos);

}}//-------------------------------find------------------------------------

struct node * find(struct binarytree * tree, int data) else if(data < p->data) else

}// 如果沒找到就返回 null

return p;

}//-------------------------------print------------------------------------

void printbinarytree(struct node * node)

void print(struct binarytree * tree)

int main(void)

資料結構之二叉樹實現

1.二叉樹的原理分析 樹是一種重要的非線性資料結構,直觀地看,它是資料元素 在樹中稱為結點 按分支關係組織起來的結構。二叉樹 binary tree 是每個節點最多有兩個子樹的有序樹。通常子樹被稱作 左子樹 和 右子樹 二叉樹演算法的排序規則 1 選擇第乙個元素作為根節點 2 之後如果元素大於根節點...

資料結構之二叉樹

在二叉樹中每個節點最多只能有兩個子節點。即左子節點和有子節點。在二叉樹中最重要的操作應當是遍歷。即按照某一順序訪問二叉樹中的每乙個節點。一般有如下幾種遍歷方法 1 前序遍歷,即先訪問根幾點,然後再訪問左子節點,最後訪問右子節點。2 中序遍歷,即先訪問左子節點,然後再訪問根節點,最後訪問右子節點。3 ...

資料結構之二叉樹

定義 滿足以下條件的就是樹 1.有且僅有乙個特定的稱為根root的結點。2.當n 1時,其餘結點可分為m m 0 個互不相交的有限集,其中每個集合本身又是乙個棵樹,並稱為根的子樹。樹是資料結構中一種常見的資料結構,比如我們排序中常見的二叉樹,紅黑樹等。最常見的是樹形表示法和廣義表表示法。樹的結構示意...