Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

12 tree #12

Open
wants to merge 17 commits into
base: main
Choose a base branch
from
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 61 additions & 0 deletions 12_tree/5639.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
#include <iostream>
#include <vector>

using namespace std;

// 이진 트리 노드 구조체
struct Node {
int data;
Node* left;
Node* right;
};

// 이진 트리 노드 생성 함수
Node* createNode(int data) {
Node* newNode = new Node();
newNode->data = data;
newNode->left = newNode->right = nullptr;
return newNode;
}

// 이진 트리 삽입 함수
Node* insertNode(Node* root, int data) {
if (root == nullptr) {
return createNode(data);
}

if (data < root->data) {
root->left = insertNode(root->left, data);
} else {
root->right = insertNode(root->right, data);
}

return root;
}

// 이진 트리 후위 순회 함수
void postorder(Node* root) {
if (root == nullptr) {
return;
}

postorder(root->left);
postorder(root->right);
cout << root->data << '\n';
}

int main() {
int value;
Node* root = nullptr;

//입력 & 연산
// 전위 순회 결과로 이진 트리 생성
while (cin >> value) {
root = insertNode(root, value);
}
Comment on lines +52 to +55
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이진 트리를 먼저 만든 후에 후위 순회를 하는 방법으로 구현해 주셨습니다.👍 이 문제는 전위순회순서로부터 후위 순회 순서를 구하기만 하면 되므로, 이에 집중하여 전위 순회 순서를 입력받은 후 함수에서 이진 트리의 특성을 이용해서 후위 순회 순서를 바로 구하도록 할 수도 있답니다! 이 점도 고려해주시면 좋을 것 같아요!


//출력
postorder(root);

return 0;
}