眉梢眼角藏欢

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1.本周学习总结

1.思维导图

2.谈谈你对树结构的认识及学习体会。

树这一章主要学习了树的基本结构,有二叉树,满二叉树,完全二叉树的结构,对于二叉树又有三种不同的遍历方法1:先序遍历:根->左子树->右子树(先序)

2:中序遍历:左子树->根->右子树(中序)

3:后序遍历:左子树->右子树->根(后序)
学习树的结构又开启了新的代码的新世界

2.PTA实验作业

2.1.题目1:题目名称

6-3 求二叉树高度

2.1.1设计思路(伪代码)

int GetHeight( BinTree BT )
{
int m,n;
	if(BT==NULL) return 0;
	m=GetHeight(BT->Left);
	n=GetHeight(BT->Right);// 定义右孩子,左孩子。
根据树高度公式定义返回分支的 树高度
}```

#2.1.2代码截图
![](https://img2018.cnblogs.com/blog/1477754/201905/1477754-20190519113051613-809881142.png)

#2.1.3本题PTA提交列表说明。
![](https://img2018.cnblogs.com/blog/1477754/201905/1477754-20190519113143120-703592090.png)
说明:这道函数题,答案非常简单,相对较容易,思路较清晰  主要是在返回的那里要花一些时间去想和做简单口算
#题目2  2.2.1
7-4 jmu-ds-二叉树叶子结点带权路径长度和
##2.2.2

```begin:
void CreatTree(TNode * &t,int i,string str);
int put(TNode *t,int i);
void puut(TNode *t);
int main()
{
	int a;
	string str;
	getline(cin,str);
	TNode *t;
	CreatTree(t,1,str);
	a=put(t,0);
	cout<<a;
}//对于主函数的安排:先输入树的对应值,输出的是它的带权路径长度和
void CreatTree(TNode * &t,int i,string str)
{
        if(str[i]!='#')
		{
			当节点不为#时,输出该点的所应的值。
		}
		if(2*i<=str.length()-1) CreatTree(t->left,2*i,str);
	    if(2*i+1<=str.length()-1) CreatTree(t->right,2*i+1,str);
}
int put(TNode * t,int i)
{
	int j,x;
	if(t==NULL) return 0;//指空处理
	if(t->left==NULL&&t->right==NULL)
	{
		return i*(t->data-'0');
	}
	j=put(t->left,i+1);
	x=put(t->right,i+1);
    返回路径长度
}
void puut(TNode *t)
{
	if(t==NULL) cout<<'#';
	if(t!=NULL)
	{
		输出左孩子,右孩子各分支的长度
	}
}
end》》》

2.2.3


1.编译错误:函数入口定义的结构体错误
2.答案错误:算法出错,后来通过修改返回函数来得到正确答案

2.3 题目3

7-1 还原二叉树

2.3.1

begin:BTNode *CreatTree(char *pre,char *in,int n)
{
	定义指针,变量;
	if(n小于等于0)   返回空;
	b=new BTNode;//申请新的链接
	b->data=*pre;
	for(p=in;p<in+n;p++)
    {
	    if(指针所指和实际值相等) 退出循环;
	}
	k=p-in;
	b->left=CreatTree(pre+1,in,k);
	b->right=CreatTree(pre+k+1,p+1,n-k-1);//左右子树遍历
	return b;
}
int BTHigh(BTNode *BT)
{
	int m,n;
	if(BT==NULL) return 0;
	m=BTHigh(BT->left);
	n=BTHigh(BT->right);
	if(m>n) return m+1;
	else return n+1;
}end for

2.3.2


编译错误:函数{} 漏掉了
遇到的问题:开始对于整个的思路不是很清晰,不知道如何让树结构还原,最后明白要重新建树把树的各分支重新定义

3、阅读代码
https://blog.csdn.net/weixin_39148042/article/details/80960356#
3.1 题目
介绍代码解决问题
用C语言完成二叉树的建立,先序遍历二叉树结构
3.2 解题思路
定于左右孩子树分支--> 建树 -->对树中结构进行遍历-->先序输出 ///代码比较长和复杂,大体用了很多队列 栈和树结构的知识
3.3 代码截图




3.4 学习体会
启发:在解决特定问题的时候,栈队列树结构综合运用非常重要,程序的可读性和可玩性更高

posted on 2019-05-18 19:53  书写诗般代码  阅读(223)  评论(0编辑  收藏  举报