[검지 Offer] 두 갈래 트리 중 하나가 되는 경로
6080 단어 두 갈래 나무소그물검지offer및 값에 대한 경로
문제 설명
두 갈래 트리와 정수를 입력하고 두 갈래 트리의 결점 값과 정수를 입력하기 위한 모든 경로를 출력합니다.경로는 나무의 뿌리 결점에서 시작하여 잎 결점까지 내려가는 결점으로 경로를 형성합니다.
알고리즘 분석
코드 구현
/* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/
class Solution {
public:
vector<vector<int> > FindPath(TreeNode* root, intexpectNumber) {
vector<vector<int> > result;
if(root == NULL) {
return result;
}
int data = root->val;
if(expectNumber < data) {
return result;
}
elseif(expectNumber == data) {
vector<int> x;
x.push_back(data);
result.push_back(x);
}
else{
expectNumber -= data;
bool left = findPath(&result, root->left, expectNumber);
bool right = findPath(&result, root->right, expectNumber);
if( left || right ) {
for(int i = 0; i < result.size(); i++) {
result[i].push_back(data);
reverse(&(result[i]));
}
}
}
return result;
}
bool findPath(vector<vector<int> >* result, TreeNode* root, intexpectNumber) {
if(root == NULL && expectNumber == 0) {
return true;
}
elseif(root == NULL) {
return false;
}
int data = root->val;
if(expectNumber < data) {
return false;
}
elseif(expectNumber == data&& root->left == NULL && root->right == NULL) {
vector<int> x;
x.push_back(data);
result->push_back(x);
}
else{
expectNumber -= data;
vector<vector<int> > left;
bool bLeft = findPath(&left, root->left, expectNumber);
if(bLeft) {
for(inti = 0; i < left.size(); i++) {
left.at(i).push_back(data);
result->push_back(left[i]);
}
}
vector<vector<int> > right;
bool bRight = findPath(&right, root->right, expectNumber);
if(bRight) {
for(int i = 0; i < right.size(); i++) {
right.at(i).push_back(data);
result->push_back(right[i]);
}
}
}
return result;
}
void reverse(vector<int>* v) {
int size = v->size();
int half = size / 2;
for(inti = 0; i < half; i++) {
int tmp = v->at(i);
v->at(i) = v->at(size - i - 1);
v->at(size - i - 1) = tmp;
}
}
};
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
java 데이터 구조 2차원 트리의 실현 코드일.두 갈래 트리 인터페이스 2 노드 클래스 3. 두 갈래 나무 구현 이 글을 통해 여러분께 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.