博客作业04--树

1.学习总结(2分)

1.1树结构思维导图

1.2 树结构学习体会

树结构大体分为,顺序和链式存储结构,我主要掌握了:
(1)二叉树的创建 ,包括层次建树,和递归建树。
(2)二叉树的遍历,其中包括先序,后续,中序还有层次遍历
(3)二叉树的线索化,有先序,后序,中序线索化,但是都没掌握,代码不懂怎么写。
(4)然后就是哈夫曼树计算wpl
体会:树很难,感觉比之前学的都难,很多东西都没有掌握,其中感觉,线索化树,和哈夫曼树的建立很难,
还有并差集算法的实现也是不理解。

2.PTA实验作业(4分)

2.1 题目1:7-1 还原二叉树(25 分)

2.2 设计思路(伪代码或流程图)

已知先序为遍历为根左右,中序为左根右。
定义一个数 T,指针*pre指向先序序列,*in 指向中序遍历。*p用于遍历操作。
先序的第一个*pre 为根,在中序数列中找到与*pre 相同的字母,
在此指针的左边是以该指针为根节点的左子数,其右边就为右子数。
T->data=*pre
p=in;
for(p=in  to  p=in+n)){
    if(*p==*pre ) 退出
}
k=p-in//计算左子数的长度。
	T->lchild=Creat(pre+1,in,k);
	T->rchild=Creat(pre+k+1,p+1,n-k-1);
利用递归得出树

2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)

2.4 PTA提交列表说明。

2.1 题目2:7-3 jmu-ds-二叉树层次遍历(25 分)

2.2 设计思路(伪代码或流程图)

建立二叉树、
if(ch=='#') T=NULL
否则{
   	T->data=L[i];
       T->lchild=T->rchild=NULL;
	Creat	(T->lchild,L,2*i);//递归左孩子
	 Creat	(T->rchild,L,2*i+1);//递归有孩子
}
层次遍历
if(T不为NULL的请况下){
   进队T
   while(队不空的情况下){
    BT=队头元素,
    输出BT
    出队
}
if(BT的左子树不为NULL)让其左子树进队
if(BT的右子树不为NULL)让其右子树进队

2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染

2.4 PTA提交列表说明。

2.1 题目2 6-4 jmu-ds-表达式树(25 分)

2.2 设计思路(伪代码或流程图)

 1 void InitExpTree(BTree &T,string str) 
 2 {
 3     stack<BTree>s;
 4     stack<char>op;
 5     将#进op栈作为结束的标志 
 6     while 还有字符 
 7     {   if str 不为运算符
 8             将后续的数字存到s栈中
 9         else
10             switch(使用Precede函数比较运算符优先级,并且返回<or=or>)
11             {   case '<' 栈顶运算符优先级低
12                     op.push(str)
13                     从str中读取下一个字符
14                     break;
15                 case '='
16                     两个都为括号 
17                     从str读取下一个字符
18                     break;
19                 case '>' 栈s运算符执行
20                     建立结点 
21                     s.push( );
22                     break;
23             }
24     }
25     while op顶不为 '#'
26         从s中取两个结点作为左右孩子结点 
27         break;
28 }
29 double EvaluateExTree(BTree T)
30 {
31     double sum=0,a,b;
32     利用ASCII码表将数字字符转化为浮点型
33     并且利用递归把所有字符转换成数字存储到a和b中 
34     switch(T->data)
35         case '+'
36           返回 a+b
37           break;
38         case'-'
39           返回 a-b
40            break;
41         case'*'
42           返回a*b
43           break;
44         case  '/'
45           if b不为0
46               返回a/b
47               break;
48           else 输出 divide 0 error!并退出程序 
49 }

2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染

2.4 PTA提交列表说明。

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

3.1 PTA排名:第四名

3.2 我的得分:259

4. 阅读代码(必做,1分)

posted @ 2018-05-05 20:02  z&jack  阅读(314)  评论(1编辑  收藏  举报