데이터 구조와 알고리즘 - 두 갈래 정렬 트리의 최대 최소값 검색
6428 단어 데이터 구조와 알고리즘
BinaryTreeNode* Find_Min(BinaryTreeNode* BST){
if(!BST)
return NULL;
else if( !BST->left )
return BST;
else
return Find_Min( BST->left );
}
순환 실현:
BinaryTreeNode* Find_Min_Recurrence(BinaryTreeNode* BST){
if(BST)
while(BST->left)
BST = BST->left;
return BST;
}
두 갈래 정렬 트리의 최대 검색은 오른쪽으로 계속 찾는 것이고, 가장 오른쪽의 노드가 가장 큰 값이다.두 갈래 정렬 트리의 최대 검색: 귀속 실현:
BinaryTreeNode* Find_Max(BinaryTreeNode* BST){
if(!BST)
return NULL;
else if( !BST->right )
return BST;
else
return Find_Max( BST->right );
}
순환 실현:
BinaryTreeNode* Find_Max_Recurrence(BinaryTreeNode* BST){
if(BST)
while(BST->right)
BST = BST->right;
return BST;
}
테스트 프로그램:
#include
using namespace std;
struct BinaryTreeNode {
int val;
BinaryTreeNode *left;
BinaryTreeNode *right;
BinaryTreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
BinaryTreeNode* Find_Min(BinaryTreeNode* BST){
if(!BST)
return NULL;
else if( !BST->left )
return BST;
else
return Find_Min( BST->left );
}
BinaryTreeNode* Find_Min_Recurrence(BinaryTreeNode* BST){
if(BST)
while(BST->left)
BST = BST->left;
return BST;
}
BinaryTreeNode* Find_Max(BinaryTreeNode* BST){
if(!BST)
return NULL;
else if( !BST->right )
return BST;
else
return Find_Max( BST->right );
}
BinaryTreeNode* Find_Max_Recurrence(BinaryTreeNode* BST){
if(BST)
while(BST->right)
BST = BST->right;
return BST;
}
int main(){
BinaryTreeNode a(8);
BinaryTreeNode b(3);
BinaryTreeNode c(10);
BinaryTreeNode d(1);
BinaryTreeNode e(6);
BinaryTreeNode f(15);
a.left = &b;
a.right = &c;
b.left = &d;
b.right = &e;
c.right = &f;
BinaryTreeNode* res = Find_Min(&a);
if(!res)
printf("no
");
else
printf("%d
",res->val);
BinaryTreeNode* res1 = Find_Min_Recurrence(&a);
if(!res1)
printf("no
");
else
printf("%d
",res1->val);
BinaryTreeNode* res3 = Find_Max(&a);
if(!res3)
printf("no
");
else
printf("%d
",res3->val);
BinaryTreeNode* res4 = Find_Max_Recurrence(&a);
if(!res4)
printf("no
");
else
printf("%d
",res4->val);
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
두 갈래 나무의 깊이가 두루 다니다텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.