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

admin2019-01-16  28

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

选项

答案(1)递归算法 void DecPrint(BSTree t){ //递减序输出二叉排序树t中所有左子树为空、右子树非空的结点数据域的值 if(t){ DecPrint(t一>rchild): if(!t一>lchild&&t一>rchild)printf(t一>data:4); DecPrint(t一>lchild): } } (2)非递归算法 void DecPrint(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)printf(t一>data:4): t=t一>lchild; //去左分支 }//if }//while }//算法结束

解析
转载请注明原文地址:https://jikaoti.com/ti/NUfjFFFM
0

最新回复(0)