可以用缩格(或移行)的文本形式(Indented Text)来表示一棵树的结点数据。例如,下面图(a)所示的树的缩格文本形式如图(b)所示。试设计一个算法,将用左子女-右兄弟链表表示的树用缩格文本形

Posted Roam-G

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了可以用缩格(或移行)的文本形式(Indented Text)来表示一棵树的结点数据。例如,下面图(a)所示的树的缩格文本形式如图(b)所示。试设计一个算法,将用左子女-右兄弟链表表示的树用缩格文本形相关的知识,希望对你有一定的参考价值。

 可以用缩格(或移行)的文本形式(Indented Text)来表示一棵树的结点数据。例如,下面图(a)所示的树的缩格文本形式如图(b)所示。试设计一个算法,将用左子女-右兄弟链表表示的树用缩格文本形式输出。

 

 

 

【解答】
下面给出树的左子女-右兄弟表示的类声明。
template <class Type> 
class Tree;
template <class Type> 
class TreeNode 			//树的结点类
friend class<Type> Tree;
private:
	   Type data;								//数据
	   TreeNode<Type> *firstChild, *nextSibling;		//子女及兄弟指针
public:
   TreeNode ( Type value = 0, TreeNode<Type> *fc = NULL, TreeNode<Type> *ns = NULL )
	        :data (value), firstChild (fc), nextSibling (ns)  	
                                                 //构造函数
	   Type getData ( )  return data; 		//取得结点数据
	   TreeNode<Type> * getFirstChild ( ) 
             return firstChild; 		//取得第一个子女地址
	   TreeNode<Type> * getNextSibling ( ) 
             return nextSibling; 	//取得下一个兄弟地址
	   void setData ( Type x )
              data = x; 		//修改结点数据
	   void setFirstChild ( TreeNode<Type> * fc ) 
             firstChild = fc; 	//修改第一个子女地址
	   void setNextSibling ( TreeNode<Type> * ns ) 
             nextSibling = ns; //修改下一个兄弟地址
	;

template <class Type> class Tree 		//树类
	private:
	   TreeNode<Type> *root, *current;		//根指针及当前指针
	   void PreOrder ( ostream & out, TreeNode<Type> *p );
	   int Find ( TreeNode<Type> *p, Type target );
	   void RemovesubTree ( TreeNode<Type> *p );
	   int FindParent ( TreeNode<Type> *t, TreeNode<Type> *p );
	public:
	   Tree ( )  root = current = NULL; 		//构造函数, 建立空树
	   void BuildRoot ( Type rootVal );
	   int Root ( );			//寻找根,使之成为当前结点
	   int FirstChild ( );		//寻找当前结点的第一个子女
	   int NextSibling ( );		//寻找当前结点的下一个兄弟
	   int Parent ( );		//寻找当前结点的双亲结点
   //树的其他公共操作
			……
	

	将以左子女-右兄弟链表表示的树用缩格文本形式打印出来的算法如下:
	#include <iostream.h>
	#include “Tree.h”
	template <class Type> void indentedText ( TreeNode<Type>*t, int k ) 
	   if ( t != NULL ) 
		  for ( int i = 0; i < k; i++ ) cout << “ ”;
		  cout << t->getData ( );
		  t = t->getFirstChild ( );
		  while ( t != NULL ) 
		    indentedText ( t, k+1 );
		    t = t->getNextSibling ( );
		  
	   


 

以上是关于可以用缩格(或移行)的文本形式(Indented Text)来表示一棵树的结点数据。例如,下面图(a)所示的树的缩格文本形式如图(b)所示。试设计一个算法,将用左子女-右兄弟链表表示的树用缩格文本形的主要内容,如果未能解决你的问题,请参考以下文章

毕业论文要求公式要缩格书写,word怎么操作?

Json Formatting.Indented 使用 Web Api 控制器、ASP.NET MVC

IndentationError: expected an indented block

IndentationError: expected an indented block错误

IndentationError:expected an indented block错误解决

IndentationError:expected an indented block错误解决