网友您好, 请在下方输入框内输入要搜索的题目:

题目内容 (请给出正确答案)

已知一棵二叉树用二叉链表存储,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--;

}

}


参考答案

更多 “ 已知一棵二叉树用二叉链表存储,t指向根节点,P指向树中任一节点。下列算法为输出从t到P之问路径上的节点。[C程序]define MaxSize 1000typedef 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]jprintf(q->data);topl--;}} ” 相关考题
考题 如果将该二叉树存储为对称序线索二叉树,则节点H的左线索指向______。A.节点AB.节点CC.节点ED.节点G

考题 阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。[说明]已知一棵二叉树用二叉链表存储,t指向根结点,p指向树中任一结点。下列算法为输出从t到P之间路径上的结点。[C程序]define Maxsize 1000typedef struct node{TelemType data;struct node*1child,*rchild;}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->rchild;tag[top]=1;}}} (3);top--; topl=0;while(top>0){q=stack[top]; /*反向打印准备*/topl++;(4);top--;}while((5)){ /*打印栈的内容*/q=stackl[topl];printf(q->data);topl--;}}

考题 从二叉树的任一节点出发到根的路径上,所经过的节点序列必按其关键字降序排列。A.二叉排序树B.大顶堆C.小顶堆D.平衡二叉树

考题 假设二叉树中每个节点值为单个字符,采用二叉链存储结构存储。设计一个算法求二叉树b的最小枝长。所谓最小最小枝长是指的是根节点到最近叶子节点的路径长度。

考题 假设二叉树中每个节点值为单个字符,采用二叉链存储结构存储。设计一个算法,输出二叉树b中第k层(根节点的层次为1)上的所有叶子节点。

考题 1、设二叉树采用二叉链表方式存储,root指向根结点,r所指结点为二叉树中任一给定的结点。则可以通过改写()算法,求出从根结点到结点r之间的路径。A.先序遍历B.中序遍历C.后序遍历D.层次遍历

考题 假设二叉树中每个节点值为单个字符,采用二叉链存储结构存储。设计一个算法,求二叉树b中第k层(根节点的层次为1)上节点个数。

考题 假设二叉树中每个节点值为单个字符,采用二叉链存储结构存储。设计一个算法void findparent(BTNode *b,char x,BTNode *p)求二叉树b中指定值为x的节点的双亲节点p,提示:根节点的双亲为NULL,若在b中未找到值为x的节点,p亦为NULL,并假设二叉树中所有节点值是唯一的。

考题 假设二叉树中每个节点值为单个字符,采用二叉链存储结构存储。设计一个算法,输出二叉树b中第k层上的所有叶子节点。