设二叉排序树的各元素值均不相同,采用二叉链表作为存储结构,试分别设计递归和非递归算法按递减序打印所有左子树为空、右子树非空的结点的数据域的值。

admin2019-01-16  29

问题 设二叉排序树的各元素值均不相同,采用二叉链表作为存储结构,试分别设计递归和非递归算法按递减序打印所有左子树为空、右子树非空的结点的数据域的值。

选项

答案(1)递归算法 void DecPfint(BSTree t){ //递减序输出二叉排序树t中所有左子树为空、右子树非空的结点数据域的值 if(t){ DecPfint(t一>rchild); if(!t一>lchild&&t->rchild)pfinff(t->data:4); DecPfint(t一>lchild): } } (2)非递归算法 void DecPfint(BSTree t){ //递减序输出二叉排序树t中所有左子树为空、右子树非空的结点的值 BSTree s[]; //s是二叉排序树结点指针的栈,容量足够大 int top=0; while(t || top>0){ while(t){s[++top]=t;t=t一>rchild;}//沿右分支向下 if(top>0){ t=s[top--]; if(!t->lchild&&t->rchild)pfintf(t->data:4); t=t一>lchild; //去左分支 }//if }//while }//算法结束

解析
转载请注明原文地址:https://kaotiyun.com/show/XeRi777K
0

最新回复(0)