为什么当打印BST的预购遍历时,我的程序什么都不做

Why when printing the preorder traversal of a BST my program does nothing

本文关键字:程序 我的 什么 遍历 打印 BST 为什么      更新时间:2023-10-16

我正在尝试编写一个代码,允许我输入一个树节点,然后指示它的预订单遍历,但不知道会发生什么。我做错了什么?

这是我的代码:

#include <stdio.h>
#include<iostream>
#include<queue>
#define MAX 100
#include <vector>
#include <stdlib.h>
typedef struct node {
    struct node *parent;
    struct node *left;
    struct node *right;
    int value;
} Node;
typedef struct tree {
    Node *root;
} Tree;
void findPlace(Node *_toAdd, Node *_current) {
    // set this node to the parent so we dont have to do it later (may change next recursion)
    _toAdd->parent = _current;
    // compare value of node we're adding to current node
    if(_toAdd->value < _current->value)
        // add the element to the left subtree
        if(_current->left == NULL)          // if no left subtree yet, add it right here
            _current->left = _toAdd;
        else                                        // otherwise continue recursion to left subtree
            findPlace(_toAdd, _current->left);
    else
        // add the element to the right subtree
        if(_current->right == NULL)     // if no right subtree yet, add it right here
            _current->right = _toAdd;
        else                                        // otherwise, continue recursing to the right subtree
            findPlace(_toAdd, _current->right);
}
Node *addNode(int _val, Tree* _tree) {
    Node *newNode = (Node *)malloc(sizeof(Node));
    newNode->value = _val;
    // if the tree is empty, this is the new root
    if(_tree->root == NULL)
        _tree->root = newNode;
    // otherwise, we need to find the right place to put it
    else
        findPlace(newNode, _tree->root);
    // return reference to the node
    return newNode;
}

void preOrder(Node *);

int main() {
    // create a tree to fool around with
    Tree *myTree = (Tree *)malloc(sizeof(Tree));
    // Add some values to the tree
    addNode(7, myTree);
    addNode(3, myTree);
    addNode(7, myTree);
    addNode(11, myTree);
    addNode(6, myTree);
    addNode(8, myTree);
    addNode(12, myTree);
    addNode(0, myTree);
    addNode(2, myTree);
    addNode(9, myTree);
    printf("Pre-Order Traversal: "); preOrder(myTree->root); printf("n");

    return 0;
}
void preOrder(Node *_root)
{
    printf("%d ", _root->value);
    if(_root->left != NULL)
        preOrder(_root->left);
    if(_root->right != NULL)
        preOrder(_root->right);
}

假设调用预购操作,它应该按该顺序打印树,但程序只是终止了,没有打印任何内容,我坚持了下来,请帮助我,并原谅我的英语

我认为您的问题是没有任何东西阻碍程序的退出。。。只需使用cin

int x;
cin >> x;
return 0;