森林的孩子兄弟表示.ppt





《森林的孩子兄弟表示.ppt》由会员分享,可在线阅读,更多相关《森林的孩子兄弟表示.ppt(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、森林的孩子兄弟表示法的设计与实现 以奇渠基本要求(1)设计森林的孩子兄弟存储结构。要求实现森林的先根、中根、后根遍历。(2)求森林的规模(森林中树的数目)、森林的高度(森林中树的最大高度)、森林的叶子数(森林中所有树的叶子之和)。(3)在森林的孩子兄弟链表示中,设计并实现相应函数,求相应二叉树的高度和叶子数。森林的孩子兄弟存储结构森林的结点类模板定义同树的结点类模板定义一致templatestruct ChildSiblingForestNode T data;ChildSiblingForestNode *firstChild;ChildSiblingForestNode *nextSibl
2、ing;ChildSiblingForestNode();ChildSiblingForestNode(T val,ChildSiblingForestNode*fChild=NULL,ChildSiblingForestNode*nSibling=NULL);森林的先根遍历森林先根遍历的递归算法思想:若森林为空,则返回;否则,1)访问森林中的第一棵树的根结点;2)先根遍历第一棵树的根结点的子树森林;3)先根遍历除第一棵树外其他树组成的森林。右图所示森林由先根遍历后得到:A、B、C、D、E、F、G、H、J、I森林的先根遍历的递归算法实现templatevoid ChildSiblingFore
3、st:PreRootOrderHelp(ChildSiblingForestNode*r,void(*Visit)(const T&)constif(r!=NULL)/判断森林是否为空(*Visit)(r-data);/访问森林中的第一棵树的根结点PreRootOrderHelp(r-firstChild,Visit);/先根遍历第一棵树的根结点的子树森林PreRootOrderHelp(r-nextSibling,Visit);/先根遍历除第一棵树外其他树组成的森林森林的中根遍历森林中根遍历的递归算法思想:若森林为空,则返回;否则,1)中根遍历第一棵树的根结点的子树森林;2)访问森林中的第一
4、棵树的根结点;3)中根遍历除第一棵树外其他树组成的森林。右图所示森林由中根遍历后得到:B、C、D、A、F、E、J、H、I、G森林的中根遍历的递归算法实现templatevoid ChildSiblingForest:InRootOrderHelp(ChildSiblingForestNode*r,void(*Visit)(const T&)constif(r!=NULL)/判断森林是否为空InRootOrderHelp(r-firstChild,Visit);/中根遍历第一棵树的根结点的子树森林(*Visit)(r-data);/访问森林中的第一棵树的根结点InRootOrderHelp(r-
5、nextSibling,Visit);/中根遍历除第一棵树外其他树组成的森林森林的后根遍历森林后根遍历的递归算法思想:若森林为空,则返回;否则,1)后根遍历第一棵树的根结点的子树森林;2)后根遍历除第一棵树外其他树组成的森林;3)访问森林中的第一棵树的根结点。右图所示森林由后根遍历后得到:D、C、B、F、J、I、H、G、E、A森林的后根遍历的递归算法实现templatevoid ChildSiblingForest:PostRootOrderHelp(ChildSiblingForestNode*r,void(*Visit)(const T&)constif(r!=NULL)/判断森林是否为空
6、PostRootOrderHelp(r-firstChild,Visit);/后根遍历第一棵树的根结点的子树森林PostRootOrderHelp(r-nextSibling,Visit);/后根遍历除第一棵树外其他树组成的森林(*Visit)(r-data);/访问森林中的第一棵树的根结点森林的层序遍历森林层序遍历采用非递归利用队列的辅助完成:若森林为空,则返回;否则,1)将森林里的各树的根结点入队;2)若队列不为空,则出队并访问;3)将2)出队得到的结点的子树组成的森林进行1)和2)步。右图所示森林由层序遍历后得到:A、E、G、B、C、D、F、H、I、J森林的层序遍历的非递归算法实现tem
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 森林 孩子 兄弟 表示

限制150内