• 2022-06-16
    以下程序是二叉链表树中序遍历的非递归算法,请填空使之完善。二叉树链表的结点类型的定义如下:typedef struct node /*C语言/{char data; struct node *lchild,*rchild;}*bitree;void vst(bitree bt) /*bt为根结点的指针*/{ bitree p; p=bt; initstack(s); /*初始化栈s为空栈*/while(p || !empty(s)) /*栈s不为空*/if(p) { push (s,p);____; } /*P入栈*/else { p=pop(s); printf(“%c”,p->;data); ____; } /*栈顶元素出栈*/}
  • p=p->;lchild#p=p->;rchild

    举一反三

    内容

    • 0

      链栈S的栈顶指针为top,不能执行出栈操作的是() A: p=S->top;S->top=p->next; B: p=S->top;S->top=p; C: p=S;S->top=p->next; D: p=S->top;S->top=p->next->next;

    • 1

      设有一个栈顶指针为top的顺序栈S,top为0时表示栈空,则向S中压入一个元素P执行的操作是

    • 2

      二叉树的存储结构为: structBTreeNode{ElemTypedata;BTreeNode* lchild;BTreeNode* rchild;};请写出其非递归的中序遍历算法voidInOrderWithoutRecursion(BTreeNode* root) {if (root == NULL) return;BTNode* p = root;stack<BTNode*> s;while (!s.empty() || p) {//入栈中,左子树的左子树在入栈while (p) {_________________;__________________;}if (!s.empty()){//当p为空时,说明根和左子树都遍历完,该进入右子树 ________________;cout<< ”“<< p->data; _________________;}}cout<<endl;}

    • 3

      二叉树以二叉链表存储,若指针p指向二叉树的根结点,经过运算s=p;while(s->rchild)s=s->rchild后,则()。 A: s指向二叉树的最右下方的结点 B: s指向二叉树最左下方的结点 C: s指向根结点 D: s为NULL

    • 4

      已有定义如下:struct node{ int data;struct node *next;} *p;以下语句调用malloc函数填空。使指针p指向一个具有struct node类型的动态存储空间。p = (struct node *)malloc(【 】);