设计一个递归算法,求二叉树 t 中度为 1 的结点数。设二叉链表类型定义如下。typedef int datatype;//结点的数据类型,假设为 inttypedef struct NODE *pointer; //结点指针类型struct NODE { datatype data; pointer lchild,rchild; };typedef pointer bitree; //根指针类型答案:int sum1(bitree t) { int L,R;if(t==NULL) return 0;L=sum1(t->lchild);R=sum1(t->rchild);if((t->lchild==NULL && t->rchild!=NULL) ,, (t->lchild!=NULL && t->rchild==NULL)) return L+R+1;else return L+R; }设计递归算法,判断二叉树 t 中是否所有结点都为正数。二叉链表的类型定义如下:typedef int datatype;//结点的数据类型,假设为 inttypedef struct NODE *pointer; //结点指针类型struct NODE { datatype data; pointer lchild,rchild; };typedef pointer bitree;//根指针类型答案:int detect(bitree t) { int L,R;if(t==NULL) return 1;if(t->data<=0) return 0;return detect(t->lchild) && detect(t->rchild); }设计算法将顺序表 L 中所有的小写字符都移动到表的前端,要求元素的移动次数尽量少。 顺序表类型定义如下:typedef char datatype; //结点的数据类型,假设为 charconst int maxsize=100; //最大表长,假设为 100}}}typedef struct {datatype data[maxsize]; //线性表的存储向量,第一个结点是 data[0]int n;//线性表的当前长度} sqlist;//顺序表类型答案:void moves(sqlist *L) { int i,j; datatype x; i=1;j=L->n; while(i< j) {while((L->data[i]>='a' && L->data[i]<='z') && i< j) i++; while((L->data[j]<'a' ,, L->data[i]>'z') && i< j) j--; if(i< j) {x=L->data[i];L->data[i]=L->data[j];L->data[j]=x; i++;j--;} } }设计算法,将顺序表 L 中所有的负数都移动到表的后端,要求移动次数尽量少。 顺序表类型定义如下:typedef int datatype; // 结点的数据类型,假设为 intconst int maxsize=100; // 最大表长,假设为 100typedef struct {datatype data[maxsize]; //线性表的存储向量,第一个结点是 data[0]int n;//线性表的当前长度} sqlist;//顺序表类型答案:void moves(sqlist *L) { int i,j; datatype x; i=1;j=L->n; while(i< j) {while(L->data[i]> = 0 && i<...