C C 二叉樹的刪除遞迴法實現

2021-10-07 04:29:44 字數 780 閱讀 1647

刪除函式 (遞迴法)

btree*

delete

(btree* head,

int key)

if(key < head->data)

if(key > head->data)if(

!(head->left)&&!

(head->right))if

(head->left &&

!(head->right))if

(!(head->left)

&& head->right)

//第四種情況, 待刪除節點存在左右子節點

//通過 find 函式獲取待刪除節點的左子樹上的最大值節點

//將獲取到的最大值替換待刪除節點的值

//再刪除待刪除節點左子樹的最大值節點

int val =

find

(head->left)

; head->data = val;

head->left =

delete

(head->left, key)

;return head;

}

int find(btree* head) 函式–(遞迴法)

int

find

(btree* head)

return

find

(head->right)

;//若此節點非左子樹的最大值節點, 則繼續遞迴

}

遞迴法(非遞迴法)遍歷二叉樹

2.4 用 遞迴法 非遞迴法 實現先序遍歷 中序遍歷和後序遍歷函式,要求遍歷時能執行一定的操作,且該操作可由遍歷函式的呼叫者來設定。define tree type int typedef struct tree nodetreenode 先序遍歷與建立二叉樹 遞迴法 include tree.h ...

二叉樹的遍歷(遞迴法和非遞迴法)

所謂的二叉樹是指樹中所有節點的子節點個數都不超過2的樹。對於二叉樹,有深度遍歷和廣度遍歷,深度遍歷有前序 中序以及後序三種遍歷方法,廣度遍歷即我們平常所說的層次遍歷。前序遍歷首先訪問根結點然後遍歷左子樹,最後遍歷右子樹。在遍歷左 右子樹時,仍然先訪問根結點,然後遍歷左子樹,最後遍歷右子樹。若二叉樹為...

遞迴法進行二叉樹同構判定

include define maxtree 100 define elementtype char define tree int 定義乙個樹的結構體,這裡採用乙個靜態鍊錶儲存 struct treenodet1 maxtree t2 maxtree 建立樹的函式 int buildtree st...