두 갈래 트리 너비 우선 검색(계층 이동, BFS)
두 갈래 나무 구조:
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
두 갈래 트리 너비 우선 검색:
두 갈래 나무의 층수에 따라 왼쪽에서 오른쪽으로 두 갈래 나무의 노드를 방문한다.예를 들어, 두 갈래 트리를 지정합니다.
5
/ \
4 8
/ / \
11 13 4
/ \ / \
7 2 5 1
너비에 따라 우선 검색: 1층 루트 노드: 5 2층 왼쪽부터 오른쪽: 4->8 3층 왼쪽부터 오른쪽: 11->13->4 4층 왼쪽부터 오른쪽: 7->2->5->1 마지막 출력: 5->4->8->11->13->4->7->2->5->1;ok, 다음은 이 문제를 어떻게 프로그래밍해야 하는지를 고려합니다.
분석:
반복 프로세스:
프로그래밍:
프로그램 구현(C/C++):
#include
#include
#include
#include
using namespace std;
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
class Solution {
public:
vector rightSideView(TreeNode *root) {
queue q;
vector result;
q.push(root);
while (!q.empty()) {
if (q.front()->left) {
q.push(q.front()->left);
}
if (q.front()->right) {
q.push(q.front()->right);
}
result.push_back(q.front()->val);
q.pop();
}
return result;
}
};
int main() {
TreeNode a(5);
TreeNode b(4);
TreeNode c(8);
TreeNode d(11);
TreeNode e(13);
TreeNode f(4);
TreeNode g(7);
TreeNode h(2);
TreeNode i(5);
TreeNode j(1);
a.left = &b;
b.left = &d;
d.left = &g;
d.right = &h;
a.right = &c;
c.left = &e;
c.right = &f;
f.left = &i;
f.right = &j;
Solution s;
vector result;
result = s.rightSideView(&a);
for (int i = 0; i < result.size(); i++) {
printf("%d->", result[i]);
}
return 0;
}
결과:
5->4->8->11->13->4->7->2->5->1->
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.