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

admin2018-08-12  23

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

选项

答案(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/K1fjFFFM
0

最新回复(0)