gpt4 book ai didi

c++ - 为什么在打印 BST 的前序遍历时我的程序什么都不做

转载 作者:行者123 更新时间:2023-11-28 08:11:48 25 4
gpt4 key购买 nike

我正在尝试制作一个代码,允许我输入一个树节点,然后指示它的前序遍历,但不明白会发生什么。我做错了什么?

这是我的代码:

#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);
}

假定调用 preorder 操作,它应该按该顺序打印树,但程序只是终止并且不打印任何东西,我坚持这个请帮助我,请原谅我的英语

最佳答案

我认为你的问题是你没有任何东西来阻止程序的退出...只需使用 cin

int x;
cin >> x;

return 0;

关于c++ - 为什么在打印 BST 的前序遍历时我的程序什么都不做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8868476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com