Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Заголовочный файл MyStack.h */
- // Включаемый файл, который содержит функции,
- // часто используемые, но не часто изменяемые
- #pragma once
- #include <SDKDDKVer.h>
- #include <stdio.h>
- struct TreeNode {
- char data;
- TreeNode* left;
- TreeNode* right;
- };
- TreeNode* writeTree(FILE *file) {
- char sym;
- TreeNode* node;
- fscanf(file, "%c", &sym);
- switch (sym) {
- case '(':
- node = new TreeNode;
- fscanf(file, "%c", &sym);
- printf("%c ", sym);
- node->data = sym;
- node->left = writeTree(file);
- node->right = writeTree(file);
- fscanf(file, "%c", &sym);
- return node;
- case '0':
- return NULL;
- case ',':
- node = writeTree(file);
- return node;
- }
- }
- char search;
- int result = 0;
- void recursiveParseTree(TreeNode* node) {
- if (node != NULL && result == 0) {
- recursiveParseTree(node->left);
- if (node->data == search) {
- result = 1;
- return;
- }
- if (result == 0) printf("%c ", node->data);
- recursiveParseTree(node->right);
- }
- }
- void getEntrance(TreeNode* tree) {
- recursiveParseTree(tree);
- if (result == 1) printf("\nFound!\n");
- else printf("\nNot Found\n");
- }
- void recursiveParseTree(TreeNode* node) {
- if (node != NULL) {
- recursiveParseTree(node->left);
- recursiveParseTree(node->right);
- printf("Wow: %c\n", node->data);
- }
- }
- /* Файл исходного кода Tree.cpp */
- // Tree.cpp: определяет точку входа для консольного приложения.
- using namespace std;
- #include "MyStack.h"
- void main() {
- FILE* file = fopen("input.txt", "r");
- fscanf(file, "%c\n", &search);
- printf("Search: %c\n", search);
- // Создание дерева
- printf("Write tree: ");
- TreeNode* tree = writeTree(file);
- // Получение первого вхождения
- printf("\nParse tree: ");
- getEntrance(tree);
- }
- /* Файлы ресурсов input.txt */
- A
- (A,(L,(C,0,0),0),(D,(E,0,(F,0,0)),(D,(H,0,0),(H,0,0))))
Advertisement
Add Comment
Please, Sign In to add comment