用 C 語言編寫一個程式,刪除一個樹


要刪除一棵樹,我們需要遍歷該樹的每個節點,然後刪除其中每個節點。這樣逐個刪除樹的每個節點,使之變為空。為此,我們需要使用一種從下到上遍歷樹的方法,以便我們可以先刪除較低節點,再刪除它們的父節點,這樣就不會產生額外的複雜性。根據我們需要的條件,後序遍歷將是最合適的,並且可以有效地發揮作用,因此我們的程式將是最優的。

以下樹的後序遍歷為 -

2-6-4-12-17-15

後序遍歷單元格技術透過以下方式工作 -

檢查左子節點→ 檢查根節點→ 檢查右子節點

示例

#include<stdio.h>
#include<stdlib.h>
struct node {
   int data;
   struct node* left;
   struct node* right;
};
struct node* addnode(int data) {
   struct node* node = (struct node*)
      malloc(sizeof(struct node));
   node->data = data;
   node->left = NULL;
   node->right = NULL;
   return(node);
}
void nodedel(struct node* node) {
   if (node == NULL) return;
   nodedel(node->left);
   nodedel(node->right);
   printf("
Node deleted, value is %d", node->data);    free(node); } int main() {    struct node *root = addnode(9);    root->left = addnode(4);    root->right = addnode(15);    root->left->left = addnode(2);    root->left->right = addnode(6);    root->right->left = addnode(12);    root->right->right = addnode(17);    nodedel(root);    root = NULL;    printf("
Tree deleted ");    return 0; }

輸出

Node deleted, value is 4
Node deleted, value is 12
Node deleted, value is 17
Node deleted, value is 15
Node deleted, value is 9
Tree deleted

更新於: 09-Aug-2019

1K+ 瀏覽量

開啟您的 職業生涯

透過完成課程獲得認證

開始
廣告