귀속 프로그램을 어떻게 씁니까
1302 단어 VC 응용 프로그램
예1: 두 갈래 나무의 최대 깊이.
1. 현재 귀속이 값이 3의 위치에 도달했다고 가정하면 3의 깊이는 두 개의 서브 트리의 깊이의 최대자 더하기 1, 즉 값 4와 5 중 깊이의 최대자에 의해 결정되기 때문에 관계식을 쓸 수 있다.
max(maxDepth(root->left), maxDepth(root->right)) + 1;
둘째, 언제 끝날까요? 현재 값이nullptr일 때 끝납니다. 끝의 깊이는 0입니다.
마지막에 프로그램을 받을 수 있어요.
int maxDepth(TreeNode *root) {
if (!root) {
return 0;
}
return max(maxDepth(root->left), maxDepth(root->right)) + 1;
}
예2: 균형 이차수인지 아닌지 판단
첫째, 현재 귀속된 위치의 나무가 균형이 맞는지 판단하는 것은 세 가지 조건에 의해 결정된다. 즉, 현재 위치의 나무가 균형이 맞는지, 왼쪽과 오른쪽의 나무가 균형이 맞는지 여부이다. 따라서 관계식을 쓸 수 있다.
//
if (abs(maxDepth(root->left) - maxDepth(root->right)) > 1) {
temp = false;
} else {
temp = true;
}
//
temp && isBalanced(root->left) && isBalanced(root->right)
2, 언제 끝납니까? 현재 값이nullptr일 때 끝납니다.true로 되돌아갑니다.마지막에 프로그램을 받을 수 있어요.
bool isBalanced(TreeNode *root) {
if (!root) {
return true;
}
int temp = true;
if (abs(maxDepth(root->left) - maxDepth(root->right)) > 1) {
temp = false;
} else {
temp = true;
}
return temp && isBalanced(root->left) && isBalanced(root->right);
}