【发布时间】:2015-03-20 15:39:06
【问题描述】:
如何在 main 中声明 tree_search 函数?我试过这样做,但我不断得到一些奇怪的结果。我想要做的是在二叉树中搜索节点0,11,如果找到就显示它。请帮助:D
#include <iostream>
class BinTreeNode {
public:
BinTreeNode(int value) {
this->value = value;
this->left = NULL;
this->right = NULL;
}
int value;
int target;
BinTreeNode* left;
BinTreeNode* right;
};
BinTreeNode* tree_insert(BinTreeNode* tree, int item) {
if (tree == NULL)
tree = new BinTreeNode(item);
else if (item < tree->value)
if (tree->left == NULL)
tree->left = new BinTreeNode(item);
else
tree_insert(tree->left, item);
else if (tree->right == NULL)
tree->right = new BinTreeNode(item);
else
tree_insert(tree->right, item);
return tree;
}
void postorder(BinTreeNode* tree) {
if (tree->left != NULL)
postorder(tree->left);
if (tree->right != NULL)
postorder(tree->right);
std::cout << tree->value << std::endl;
}
void in_order(BinTreeNode* tree) {
if (tree->left != NULL)
in_order(tree->left);
std::cout << tree->value << std::endl;
if (tree->right != NULL)
in_order(tree->right);
}
BinTreeNode* tree_search(BinTreeNode* tree, int target) {
BinTreeNode* r = tree;
while (r != NULL) {
if (target == r->value)
std::cout << r << std::endl;
else if (target > r->value)
r = r->left;
else
r = r->right;
std::cout << r << std::endl;
}
}
int main(int argc, char* argv[]) {
BinTreeNode* t = tree_insert(0, 6);
tree_insert(t, 10);
tree_insert(t, 5);
tree_insert(t, 2);
tree_insert(t, 3);
tree_insert(t, 4);
tree_insert(t, 11);
in_order(t);
tree_search(t, 11);
return 0;
}
输出
2
4
5
6
10
11
0x6c6f28 //at the moment im getting these weird characters and i want it to
0x6c6f40 // display the (0,11) node if it was found
0
【问题讨论】:
标签: c++ function binary-tree binary-search-tree declaration