以后序法遍历二叉树
traversing a binary tree in postorder method
我是二叉树新手,想遍历二叉树中的第2个节点但是输出结果变成了随机数或者没有输出
驱动函数如下:
int main(){
node *root, *num2;
bt tree;
root = new node;
root->data = 12;
root->left = num2;
root->right = NULL;
tree.root = root;
num2 = new node;
num2->data = 10;
num2->right = NULL;
num2->left =NULL;
std::cout<<"Postorder: ";
tree.postorder();
std::cout<<"\n";
return 0;
}
二进制遍历方法:
struct bt{
node *root = nullptr;
public:
void postorder(){
postorder_impl(root);
}
private:
void postorder_impl(node *start){
if(!start) return;
postorder_impl(start->left);
postorder_impl(start->right);
std::cout << start->data << " ";
}
};
When you write root->left = num2;
num2
尚未初始化。所以它是内存中的随机地址。所以 root->left
(和 postorder();
函数中的 start->left
)。因此,即使在将 num2 设置为有效节点后,您将使用未定义的地址调用 postorder_impl();
函数,这将是一个随机内存地址。
在它前面加上num2 = new node;
。 root->left = num2;
我是二叉树新手,想遍历二叉树中的第2个节点但是输出结果变成了随机数或者没有输出
驱动函数如下:
int main(){
node *root, *num2;
bt tree;
root = new node;
root->data = 12;
root->left = num2;
root->right = NULL;
tree.root = root;
num2 = new node;
num2->data = 10;
num2->right = NULL;
num2->left =NULL;
std::cout<<"Postorder: ";
tree.postorder();
std::cout<<"\n";
return 0;
}
二进制遍历方法:
struct bt{
node *root = nullptr;
public:
void postorder(){
postorder_impl(root);
}
private:
void postorder_impl(node *start){
if(!start) return;
postorder_impl(start->left);
postorder_impl(start->right);
std::cout << start->data << " ";
}
};
When you write root->left = num2;
num2
尚未初始化。所以它是内存中的随机地址。所以 root->left
(和 postorder();
函数中的 start->left
)。因此,即使在将 num2 设置为有效节点后,您将使用未定义的地址调用 postorder_impl();
函数,这将是一个随机内存地址。
在它前面加上num2 = new node;
。 root->left = num2;