cj云 2021-06-26 19:50 采纳率: 40%
浏览 18

请求精通c++指导c++,还希望能教导一下

#include<stdio.h>

#include<iostream>

#include<stdlib.h>

#define ok 0

#define error -1

#define true 0

#define false -1

#define max 9

#define k 3

#define v 10

using namespace std;

typedef int status;

typedef int elem;

typedef struct no

{

    int data;

    struct no *lchild, *rchild;

} noe, *noa;

typedef struct an

{

    struct no *dat;

    struct an *next;

}ane, *anc;

typedef struct

{

    anc top;

    anc base;

    int len;

}sqstack;

int main()

{

       noa t ;

       elem a, e, value;

       int c, d;

       cout << "please select operations which create tree:  1 to " << k << endl;

       cout << "c:(1:precreat_tree,2:inordercreat_tree,3:postordercrat_tree)" << endl;

       cin >> c;

       switch(c)

       {

        case 1:

            cout << "preordercreat_tree" << endl;

            precreat_tree(t);//创建二

            break;

        case 2:

            cout << "inordercreat_tree" << endl;

            inordercreat_tree(t);

            break;

           

        /*case 4:

            cout << "postordercrat_tree" << endl;

            postordercrat_tree(t);

            break;*/

       }

      cout<<"please select operations" << endl;

      cout << "please enter number d: 1 to " << v <<endl;

      cout << "1:pretraverse" << endl;

      cout << "2:inordertraverse" << endl;

      cout << "3:postordertraverse" << endl;

      cout << "4:bitreeempt" << endl;

      cout << "5:bitree_depth" << endl;

      cout << "6:bitree_root" << endl;

      cout << "7:s2bitree_value" << endl;

      cout << "8:Assign" << endl;

      cout << "9:parent" << endl;

      cout << "10:pretraverse_2tree" << endl;

      cin>> d;

      switch(d)

      {

        case 1:

            cout << "pretraverse" << endl;

            pretraverse_tree(t, *visit);//先序遍历二叉�?

            break;

        case 2:

            cout << "inordertraverse" << endl;

            inordertraverse(t, *visit);

            break;

        case 3:

            cout << "postordertraverse" << endl;

            postordertraverse (t, *visit);

            break;

        case 4:

            cout << " bitreeempt" << endl;

            bitreeempt(t); //检验二叉树�?否为空,空则返回false,否则返回true

            break;

        case 5:

            cout << "put out the tree'depth" << endl;

            cout << bitree_depth(t) << endl;

            break;

        case 6:

            cout << "return root node" << endl;

            bitree_root(t);

            break;

case 7:

            cout << "look for value in the tree" << endl;

            cout << "please put a" << endl;

            cin >> a;

            cout << bitree_value(t, a);

            break;

        case 8:

            cout << "Assign" << endl;

            cout << "please enter e ";

            cin >>e;

            cout<< "  and enter value" ;

            cin >> value;

            Assign(t, e, value);

            break;

        case 9:

            cout << "look for the e parent "<<" please enter e: ";

            cin >> e;

            parent(t, e);

            break;

         case 10:

            cout << "pretraverse_2tree" << endl;

            pretraverse_2tree(t, *visit);

            break;

      }

            return ok;

}

status Initstack(sqstack &S)

{

    S.top = new ane[1];

    if(!S.top)

    {

        cout << "fail" << endl;

        return error;

    }

    else 

    S.base = S.top;

    S.len = 0;

    return ok;

}

status push(sqstack &S, noa &q)

{

    anc p=new ane[1];

    if(!p)

    {

        cout << "fail" << endl;

        return error;

    }

    p->dat = q;

    p->next = S.top->next;

    S.top->next = p;

    if(S.len==0)

        S.base = p;

    S.len++;

    return ok;

status pop(sqstack &S, noa &p)

{

    if(!p)

     {

        cout << "fail" << endl;

        return error;

    }

    anc q = S.top->next;

    p = q->dat;

    //p = S.top->next->dat;

    S.top->next = S.top->next->next;

    delete[] q;

    //S.len--;

    return ok;

}

status precreat_tree(noa &t)

{

    int e;

    cin >> e;

    if(e!=0)

    { 

        t = new noe[1];

    if(!t)

    {

         cout << "fail" << endl;

         return error;

     }

        else

         {

        t->data = e;

        precreat_tree(t->lchild);

        precreat_tree(t->rchild);

        }

    }

    else

        t = NULL;

       return error;

}

int visit(int e)

{

    cout << e << endl;

    return 0;

}

我想求教大佬们能不能教导我为什么我利用非递归先序遍历,却只能输出左子树,而不能输出右子树

  • 写回答

1条回答 默认 最新

  • 有问必答小助手 2021-07-07 11:39
    关注

    你好,我是有问必答小助手。为了技术专家团更好地为您解答问题,烦请您补充下(1)问题背景详情,(2)您想解决的具体问题,(3)问题相关代码图片或者报错信息。便于技术专家团更好地理解问题,并给出解决方案。

    您可以点击问题下方的【编辑】,进行补充修改问题。

    img

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。