트리를 삭제하려면 트리의 각 노드를 순회하여 하나씩 삭제해야 합니다. 이런 식으로 트리의 각 노드를 하나씩 삭제하여 비어 있게 만들 수 있습니다. 이를 위해 우리는 추가적인 복잡성을 피하기 위해 먼저 낮은 노드를 제거한 다음 그 부모를 제거할 수 있도록 트리를 아래에서 위로 순회하는 방법을 사용해야 합니다. 우리의 필요에 따라 후위 순회가 가장 적합하며 프로그램을 최적으로 만드는 데 효율적으로 작동합니다.
다음 트리의 사후 순회는 -
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("</p><p> 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("</p><p> Tree deleted "); return 0; }
위 내용은 트리를 삭제하는 C 프로그래밍 프로그램 작성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!