二叉树方法
binary tree method
我有以下代码:
#include <iostream>
using namespace std;
class BST{
public:
int n,*v,vn;
struct node {
int val;
node *left,*right;
node (int v){ val=v; left=right=0;}
void Print(node *p){
cout<<p->val;
if (p->left){
Print(p->left);
}
else if(p->right){
Print(p->right);
}
}
}; node *root;
node *rinsert(node *p,int t){
if (p==0){
p=new node(t);
n++;
}
else if (t<p->val){
p->left=rinsert(p->left,t);
}
else if (t>p->val){
p->right=rinsert(p->right,t);
}
return p;
}
void traverse(node *p){
if (p==0) return;
traverse(p->left);
v[vn++]=p->val;
traverse(p->right);
}
void print(){
Print(root);
}
public:
BST(int maxelms,int maxval){
root=0;
n=0;
}
int size(){
return n;
}
void insert(int v){
root=rinsert(root,v);
}
void report(int *x){
v=x;
vn=0;
traverse(root);
}
};
int main(){
BST bt(12,25);
bt.insert(12);
bt.insert(10);
bt.insert(25);
bt.insert(7);
bt.insert(11);
bt.insert(8);
bt.insert(4);
bt.insert(3);
bt.insert(20);
bt.insert(23);
bt.insert(24);
bt.insert(1);
return 0;
}
编译器说Print()
是未定义的。为什么?我已经在课堂上宣布了。
将"void Print(node*p("函数移到结构节点定义之外
无效打印(节点*p({-->静态无效打印(结点*p(}
else if(p->right({-->if(p->right({
打印(root(-->节点::打印(根(
您有两种打印方法:
BST::node::Print(node* p);
BST::print();
大写Print
是node
结构的一部分。小写print
是BST
类的一部分。
您可能遇到的问题:
- 在类外调用CCD_ 6。您需要致电:
BST bt; bt.print();
- 在CCD_ 9类之外调用CCD_。你需要打电话给
node n; n.Print(&n);
,这有点傻。如果Print
接受node
,那么它就不需要成为node
类的一部分 - 调用
Print()
——根本没有这样的事情。有print()
和Print(node*)
——大写很重要
如果这不能回答您的问题,请更新您的问题以了解更多信息。复制并粘贴实际的编译器错误,并指示哪一行出现错误。
相关文章:
- 从父数组测试用例构造二叉树失败
- 打印时有二叉树问题.用户输入不打印任何内容
- 试图找到二叉树的深度
- 二叉树结构平衡,使用递归时EXC_BAD_ACCESS
- 指向二叉树中新节点的指针
- 我试图用这段代码找到二叉树的高度,但它一直返回 0,有人可以告诉我为什么吗?
- C++:如何计算二叉树中其值模块高度小于 2 的节点数?
- 二叉树级别顺序遍历在leetcode中
- 运行无限循环的最小二叉树问题
- 打印二叉树中的常见元素
- 二叉树基准测试结果
- 带有矢量重复值的二叉树打印出来
- 签入二叉树的函数是平衡C++
- 我有两棵二叉树.我想在不更改输入树的情况下深度复制两个二叉树的结果
- 如何计算给定数字在二叉树中出现的次数?
- 这种遍历二叉树的递归方法在一些递归后崩溃!为什么?
- 二叉树递归插入方法不起作用
- 创建了一个 deque 类,但无法在我的二叉树类方法中声明
- 无法使用非递归顺序方法遍历二叉树
- 二叉树方法