> 백엔드 개발 > C++ > 본문

트리를 삭제하는 C 프로그래밍 프로그램 작성

WBOY
풀어 주다: 2023-08-26 14:45:05
앞으로
1088명이 탐색했습니다.

트리를 삭제하려면 트리의 각 노드를 순회하여 하나씩 삭제해야 합니다. 이런 식으로 트리의 각 노드를 하나씩 삭제하여 비어 있게 만들 수 있습니다. 이를 위해 우리는 추가적인 복잡성을 피하기 위해 먼저 낮은 노드를 제거한 다음 그 부모를 제거할 수 있도록 트리를 아래에서 위로 순회하는 방법을 사용해야 합니다. 우리의 필요에 따라 후위 순회가 가장 적합하며 프로그램을 최적으로 만드는 데 효율적으로 작동합니다.

다음 트리의 사후 순회는 -

2-6-4-12-17-15
로그인 후 복사

후위 순회 셀 기법은 다음과 같이 작동합니다.

왼쪽 자식 확인 → 루트 노드 확인 → 오른쪽 자식 확인

트리를 삭제하는 C 프로그래밍 프로그램 작성

#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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿