#1.学习总结 ##1.1树结构思惟导图 ##1.2 树结构学习体会算法
求树高度函数{ 若是BT==NULL 空树返回0 //递归出口 不然{ 取BT->Left作函数参数求左子树高度赋值给m 取BT->Right作函数参数求左子树高度赋值给n 若是(m>n)返回m+1 不然返回n+1 } }
###代码截图 ###PTA提交列表说明。
数组
主函数{ 输入两个字符数组 初始化树Tree 调用还原函数recover() 输出 树高度 } recover函数{ 若是树空 返回NULL; 初始化树bt 先序首个字符赋值给bt根节点 for i=0 to N{ 再中序中寻找先序首字符的位置 break; } 左子树递归法建树 右子树递归法建树 } 求高度函数{ 若是树空 返回0; l=递归计算左子树高度 r=递归计算右子树高度 返回max[l,r] }
###代码截图 ###PTA提交列表说明。
函数
##题目三:jmu-ds-表达式树 ###设计思路学习
建表达式树函数{ 创建树s栈和字符op栈 while(str[i]不为0){ 若是不是操做符{ 新建节点T,数据域赋值str[i] 节点T进s栈 } 不然{ 判断op栈顶字符与str[i]的优先级{ 小于:str[i]进栈 等于:处在栈顶字符 大于:把op的栈顶赋值给t的数据域,连续出栈s的两个栈顶做为t的左右孩子,在将T进s栈 } } } while(op栈顶不是#) { op栈顶元素赋值给T的数据域 出栈s的栈顶赋值给T的左孩子 若是(s不空) { 出栈s的栈顶赋值给T的右孩子 } T进s栈 T=s栈顶 } } 计算表达式树函数{ 若是(左右子树均不空){ 把T->data转换成数字 } a,b分别用由T的左右子树用递归法算出 判断{ +:返回a+b -:返回a-b *:返回a*b /;{ 若是b<1:直接退出 不然返回:a/b } } }
###代码截图
###PTA提交列表说明。
设计
#3.截图本周题目集的PTA最后排名调试
##个人得分code
#阅读代码blog
树的存储结构以下: typedef int ElemType; typedef struct BiTNode{ ElemType data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; 复制一颗树 bool CopyTreeIsOK(BiTree p){ if(CopyTree(p)==NULL) return false; return true; } BiTree CopyTree(BiTree p){ if(!p) return NULL; BiTree q=new BiTNode; q->data=p->data; q->lchild=CopyTree(p->lchild); q->rchild=CopyTree(p->rchild); return q; }
##5. 代码Git提交记录截图 递归