以后序法遍历二叉树

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;