[数据结构]我在做树一章题目时的心得体会(不断更新中...)

博客围绕二叉树和树的数据结构展开,介绍了后序非递归遍历二叉树时栈元素情况、k叉树孩子层次序列等知识。还提及树的递归出口判断、存储结构,以及二叉树的层次访问、线索树结点的前驱和后继判断,同时给出了给定序列和静态数组建树的方法。

1、后序非递归遍历二叉树时,访问到指定结点时栈中的元素为此结点的祖先。

2、k叉树第p个结点的第k-1个孩子的层次序列为p*k。

3、在树这章写递归时,出口判断常为树空或子树空。

4、树转成的二叉树无右子树。

5、树用孩子兄弟存储的结构中,结点若无firstchild,则该结点在树的结构中必是一个叶子。故用孩子兄弟链表示的树统计叶子的算法可以写为firstchild == NULL。

6、找子孙常用先序遍历,找祖先常用后序遍历。

7、在按层次访问一棵二叉树的基础上加以修改,不论其左右子树是否为空均入队,若为完全二叉树,则将它按层序输出时得到的是一个连续的不含空指针的序列,反之序列中会含有空指针。

8、递归中常用return向上级函数返回值。

9、对于递归单棵树,用NULL和非NULL做出口判断已经足够。对于建树的担心,用return向上级函数返回地址,并在非NULL状态下建好链就行了。而对于多棵树,则要对不同树的不同状态进行出口判断。

10、先序线索树结点的前驱:当结点无左子树时,是lchild指向的结点,否则要设一个pre指针指向节点的根,则pre指针指向的结点为当前结点的前驱。结点的后继:结点有左子树,则后继为其左子树,否则为其rchild指向的结点。

11、中序线索树结点的前驱:结点无左子树时,其lchild指向的结点即为它的前驱,否则为其左子树的最右下结点;后继:结点无右子树时其后继为其rchild指向的结点,否则其后继是它右子树最左结点。

12、后序线索树节点的前驱:若结点无左子树,则其lchild指向的结点是其前驱,否则若结点有右子树,其右孩子为其前驱,否则其左孩子为其前驱;后继:结点右子树为空时,其rchild指向的结点为其后继,否则需通过找结点的双亲,若该结点为双亲的左孩子且双亲有右子树,则结点的后继为其双亲右子树的最左结点,若其双亲无右子树,则结点后即为其双亲。若结点是其双亲的右孩子,其后继是其双亲。而线索二叉树结点中一般不含指向双亲的指针,由此可见,线索对后序线索树的后继无太多帮助。

13、对于给定序列建树,应用给定序列找出其根的位置,再找左右子树的上下界作为新树的全树上下界,不断缩小树,直至树空。

14、对于给定静态数组建链结构树,先建好根,然后用2*i和2*i+1的规律建其左右子树。

15、

不断更新中...

### 数据结构的重要性及其学习方法 数据结构是一门研究非数值计算的程序设计问题中的操作对象以及它们之间的关系和操作等相关问题的学科[^1]。通过学习数据结构,可以更好地理解如何高效地存储、管理和处理数据。 对于《数据结构—用C语言描述(第三版)》这本书籍,其作者耿国华教授在书中深入浅出地讲解了许多重要的数据结构理论与实践应用案例。然而,在实际学习过程中,如果仅依赖于教材本身而不辅以练习,则难以真正掌握其中的知识点。因此,完成课后习题并核对答案是非常必要的环节之一。 关于您提到的具体需求,《数据结构—用C语言描述(第三版)》第三章的习题答案目前并没有官方发布的PDF文档可供下载。但可以通过以下方式获取帮助: #### 方法一:查阅相关书籍资源 部分高校图书馆可能收藏有该书的教学辅助资料或者教师手册,这些材料通常包含了详细的解题过程及最终结果说明。建议联系所在学校的图书管理员查询是否有此类资源可用。 #### 方法二:参与在线讨论社区 许多编程爱好者和技术人员会在论坛上分享自己的学习心得以及解决问题的方法论。例如Stack Overflow、GitHub Issues页面等都是不错的交流平台,在这里提问往往能够得到来自全球各地专业人士的有效反馈。 以下是针对某些典型题目类型的通用解决方案示例: ```c // 示例代码片段展示链表节点定义 typedef struct Node { int data; struct Node* next; } ListNode; ListNode* createNode(int value){ ListNode *new_node = (ListNode*)malloc(sizeof(ListNode)); new_node->data = value; new_node->next = NULL; return new_node; } ``` 上述函数用于创建一个新的单向链表节点实例,并初始化它的`data`字段为指定整数值得到的结果返回给调用者进一步链接起来形成完整的列表结构[^2]。 ### 注意事项 当尝试解决具体章节内的特定问题务必仔细阅读原题干要求,确保所采用算法满足复杂度限制条件的同也要兼顾可读性和扩展性考量因素。
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值