[试题]

已知一棵二叉树用二叉链表存储,t指向根节点,P指向树中任一节点。下列算法为输出从t到P之问路径上的节点。

[C程序]

define MaxSize 1000

typedef struct node {

TelemType data ;

struct node *ichiid,*rchiid;

}BiNode,*BiTree;

void Path(BiTree t,BiNode *P)

{BiTree *stack[Maxsize],*stackl[Maxsize],*q;

int tag[Maxsize],top=0,topl;

q=t;

/*通过先序遍历发现P*/

do{while(q!=NULL &&q!=p)

/*扫描左孩子,_日.相应的节点不为P*/

{ (1) ;

stack[top]=q;

tag[top]=0;(2) ;

}

if(top>0)

{ if(stack[top]=P) break; /*找到P,栈底到栈顶为t到P*/

if(tag[top]==1)top--;

else { q=stack[top];

q=q->rchiid;

tag[top]=1;

}

}

} (3) ;

top--;topl=0;

while(top>0) {

q=stack[top]; /*反向打印准备*/

topl++;(4) ;

top--;

}

while( (5) ){ /*打印栈的内容*/

q=stackl[topl]j

printf(q->data);

topl--;

}

}

参考答案与解析:

相关试题

设一棵完全二叉树共有699个节点,则在该二叉树中的叶子节点数为______。

[单选题]设一棵完全二叉树共有699个节点,则在该二叉树中的叶子节点数为______。A.349B.350C.255D.351

  • 查看答案
  • 设一棵完全二叉树共有699个节点,则在该二叉树中的叶子节点数为()。

    [单选题]设一棵完全二叉树共有699个节点,则在该二叉树中的叶子节点数为( )。A.349B.350C.255D.351

  • 查看答案
  • 下图给出一棵二叉树,按照前序法周游二叉树的节点序列是

    [单选题]下图给出一棵二叉树,按照前序法周游二叉树的节点序列是A.ABDEGCFHIB.DGEBHIFCAC.ADBGEFCIHD.ADGEBHIFC

  • 查看答案
  • 设一棵二叉树的深度为k,则该二叉树中最多有()个节点。

    [单选题]设一棵二叉树的深度为k,则该二叉树中最多有()个节点。A.1B.C.2D.

  • 查看答案
  • 设一棵二叉树的深度为k,则该二叉树中最多有()个节点。

    [单选题]设一棵二叉树的深度为k,则该二叉树中最多有()个节点。A.1B.C.2D.

  • 查看答案
  • 若一棵二叉树中的节点均无右孩子节点,则该二叉树的中根遍历和后根遍历序列正好相反。()

    [判断题]若一棵二叉树中的节点均无右孩子节点,则该二叉树的中根遍历和后根遍历序列正好相反。()A.对B.错

  • 查看答案
  • 若一棵二叉树中的节点均无右孩子节点,则该二叉树的中根遍历和后根遍历序列正好相反。()

    [判断题]若一棵二叉树中的节点均无右孩子节点,则该二叉树的中根遍历和后根遍历序列正好相反。()A.对B.错

  • 查看答案
  • 若一棵二叉树中的节点均无右孩子节点,则该二叉树的中根遍历和后根遍历序列正好相反。()

    [判断题]若一棵二叉树中的节点均无右孩子节点,则该二叉树的中根遍历和后根遍历序列正好相反。()A.对B.错

  • 查看答案
  • 若一棵二叉树中,度为2的节点数为9,则该二叉树的叶结点数为

    [单选题]若一棵二叉树中,度为2的节点数为9,则该二叉树的叶结点数为A. 10B.11C.12D.不确定

  • 查看答案
  • 设一棵二叉树有3个叶子节点,有8个度为1的节点,则该二叉树中总的节点数为()

    [单选题]设一棵二叉树有3个叶子节点,有8个度为1的节点,则该二叉树中总的节点数为()A.12B.13C.14D.15E.16F.17

  • 查看答案
  • 已知一棵二叉树用二叉链表存储,t指向根节点,P指向树中任一节点。下列算法为输出从