猿问

你好,假设树的存储结构采用孩子兄弟表示法,该怎么写出树的先序遍历算法?

假设树的存储结构采用孩子兄弟表示法,写出树的先序遍历算法。该算法的函数头为:
voidPreOrderTree(TNode*root,void (*Visit)()),树的孩子兄弟表示法数据类型定
义为:
typedefstructtnode{
DataTypedata;
structtnode*firstchild,*nextsibling;
}TNode,*Tree;

慕尼黑5688855
浏览 234回答 1
1回答

慕雪6442864

以下两种描述形式之一均可:void PreOrderTree(TNode *root, void (*Visit)()){ p= root; if(p){Visit(p-> data);PreOrderTree(p- > firstchild);PreOrderTree(p-> nextsibling) ;}}或者:void PreOrderTree(TNode *root, void ( * Visit)()){ p= root;while(p | | ! StackEmpty(s)){while(p) {Visit(p- > data) ;Push(s,p) ;p=p- > firstchild;}p= Pop(s);p= p-> nextsibling;}}扩展资料孩子兄弟表示法,采用的是链式存储结构,其存储树的实现思想是:从树的根节点开始,依次用链表存储各个节点的孩子节点和兄弟节点。因此,该链表中的节点应包含以下 3 部分内容:1、节点的值;2、指向孩子节点的指针;3、指向兄弟节点的指针;
随时随地看视频慕课网APP
我要回答