博客作业04--树

1.学习总结(2分)

1.1树结构思维导图

1.2 树结构学习体会

树是一种重要的非线性结构,树的调用还跟递归有关

困难就是伪代码与代码之间的转换,还有递归调用和非递归算法都不是很清晰,写代码困难

可以解决的问题有求树的高度,与森林之间的转换,线索化二叉树,哈夫曼树的WPL和编码

2.PTA实验作业(4分

2.1 题目1:6-2 求二叉树高度

2.2 设计思路

定义lchild,rchild
if  树的高度为0
end
else
求左子树的高度
求右子树的高度
递归返回树的高度
end

2.3 代码截图

2.4 PTA提交列表说明

2.1 题目2:6-4 jmu-ds-表达式树

2.2 设计思路

void InitExpTree(BTree &T,string str)  //建表达式的二叉树
建立栈s1存放数字
建立栈s2存放操作符
将'#'入栈 
	while 字符串不空 
		if str[i]不是运算符 
		创建新节点 ,将该节点的左右孩子初始化为空,并将该节点入栈 
		else
		判断操作符优先级 
    	若优先级小,入栈数s2,优先级一样,s2栈顶元素出栈
		优先级大,创建新节点并赋值,左右孩子分别取是s1栈顶元素后再入栈s1
	while 符号栈不为'#'
    创建新节点并赋值,左右孩子分别取是s1栈顶元素后再入栈s1 

double EvaluateExTree(BTree T)//计算表达式树  
定义浮点数a,b分别存放左右子树 
递归将字符转为数字 
while 树节点存在 
   switch(T->data) 
       case +	返回a+b 
       case - 返回a-b 
       case * 返回a*b
       case / 如果b为0,输出 divide 0 error!  否则 返回a/b 
    end

2.3 代码截图

2.4 PTA提交列表说明

2.1 题目1:7-1 还原二叉树

2.2 设计思路

定义结构体 
    ElemType data;
    Bintree lchild;
    Bintree rchild;
Bintree Recover(ElemType Pre[],ElemType In[],int len)
    Bintree T
    if  !len
    返回 NULL;
    else
        for  i=0   i<len
		if 在中序遍历序列中找根节点
        递归构建左右子树
       返回 T

int GetHigh(Bintree T)
    定义HL为左子树高度,HR为右子树高度,Height为树高度 
    if 树空 
    返回 0
    else
    求左子树高度HL 
    求右子树高度HR 
    树高为左右树高较大者加1
    
   返回 Height;

    main()
    定义树 Tree
    定义先序遍历数组Preorder[MAX+1]和中序遍历数组Inorder[MAX+1]
    输入结点总数N,先序遍历序列和中序遍历序列
    递归调用处理先序遍历序列和中序遍历序列 
    再调用求高度函数GetHigh(Tree) 
    输出高度H 

2.3 代码截图

2.4 PTA提交列表说明

3.截图本周题目集的PTA最后排名

3.1 PTA排名

3.2 我的得分:150

posted @ 2018-05-05 19:51  琼楼玉女  阅读(181)  评论(1编辑  收藏  举报