DS博客做业05--树

#1.本周学习总结 ##1.思惟导图 ##2.谈谈你对树结构的认识及学习体会算法

相对于以前的栈和队列,树的学习难度明显. 相较于以前的线性结构, 树更多的须要应用递归思惟. 循环结构用多了以后, 对于转变到递归难以适应, 考虑问题的方式也改变了
树表示数据表素之间一对多的关系,能够分为二叉树(彻底二叉树、满二叉树、平衡二叉树、排序二叉树),红黑树,哈夫曼树等等,遍历的顺序也有不少种:中序遍历,
先序遍历、后序遍历、层次遍历等等(每一种咱们都要掌握),分类较多,应用的范围也很广.

#2.PTA实验做业 ##2.1题目一:6-2 中序输出度为1的结点 ###2.1.1设计思路(伪代码)函数

由题目中序输出可知,先左子树,再根,在右子树
If T!=NULL //树不为空
递归遍历左子树
If 右子树==NULL 且左子树!=NULL 或者 左子树==NULL且右子树!=NULL
输出

###2.1.2代码截图 ###2.1.3提交列表及说明 if的判断条件出错学习

##2.2题目二:7-1 还原二叉树 ###2.2.1 设计思路设计

int Height(int num1,int num2,int lenth,int H)
if lenth == 0 
    返回 H-1;
    int len = 0;
    while(1)
	{
        if  Str2[num2+len] == Str1[num1]
		break;
       
           len++;      
    }
     应用递归算法
    int h1 = Height(num1+1,num2,len,H+1);   返回左子树最大高度 
    int h2 = Height(num1+len+1,num2+len+1,lenth-1-len,H+1);  返回右子树最大高度
 
    返回高度

###2.2.2代码截图 ###2.2.3本题PTA提交列表说明 3d

##2.3 题目3:7-2 根据后序和中序遍历输出先序遍历 (25 分) ###2.3.1 代码思路code

void preorder(int a[], int b[], int n)
if n不为0
    后序遍历的最后一个元素为根
    for i=0 to n
        if b[i]=根 then m=i为根在中序遍历中的位置
    输出元素
    递归调用本函数

###2.3.2 代码截图 ###2.3.3 提交列表 #3.阅读代码 ##3.1 题目 计算一棵树的宽度(并输出每一层的宽度) ##3.2 解题思路blog

做者解题思路:
先建立一个队列,用一个标注变量去标注最开始时队尾的位置,而后用一个循环来操做二叉树,循环体内的操做和层序遍历相似,不一样的是,在每趟循环结束后都要来判断上一层是否便利完成(用那个标注变量和队首的位置比较)若是便利完成,则刷新最大宽度。

##3.3 代码截图 排序

##3.4 学习体会 经过此题,加成了对于层次遍历的作法,相对于前中后序遍从来说,层次遍历须要用队列辅助实现,对于代码的操做多了许多递归

相关文章
相关标签/搜索