• 树的创建与遍历


       使用孩子链表表示法表示数,采用广义表的形式输入:

    #define ms 5//数的度
    typedef struct node{//树的孩子链表表示法
    	char data;
    	node* p[ms];
    }*Tree;
    
    void createTree(Tree& tree,char* p){
    	tree=NULL;
    	Tree stack[ms],currentNode;//stack记录当前层次对应的双亲节点
    	int d[ms];//记录
    	int i=0,top=0;
    
    	while(p[i]){
    		switch(p[i]){
    		    case ' ':break;
    			case'(':
    				top++;//层次+1
    				stack[top]=currentNode;//当前层次所属的双亲节点
    				d[top]=0;//当前层次至少一个孩子节点
    				break;
    			case')':
    				top--;//层次-1,一个层次结束
    				break;
    			case',':
    				d[top]++;stack[top]为双亲所对应的孩子数
    				break;
    			default:
    				//创建节点
    				if((currentNode=(Tree)malloc(sizeof(node)))){
    				     currentNode->data=p[i];
    			         for(int j=0;j<ms;j++)
    					     currentNode->p[j]=NULL;
    				}
    
    				//连接第d[top]个孩子与其双亲节点stack[top]
    				if(!tree)
    					tree=currentNode;
    				else
    					stack[top]->p[d[top]]=currentNode;
    		}
    		i++;
    	}
    }
    //数的输出
    void printTree(Tree tree){
    	if(tree){
    		cout<<tree->data;
    	    if(tree->p[0]){
    		   cout<<"(";
    		   printTree(tree->p[0]);
    		   for(int i=1;tree->p[i]&&i<5;i++){
    			    cout<<",";
    			   printTree(tree->p[i]);
    		   }
    		   cout<<")";
    		}
    	}
    }
    


  • 相关阅读:
    深度通道编程模型
    缓冲区溢出实验实验楼
    团队作业(一)
    信安导论学习阶段性总结
    Python总结
    mysql下载及安装
    初识python
    MobileMenuScene来点动画效果
    移动菜单页面PlayerInput
    渲染和填充MobileMenuListItem
  • 原文地址:https://www.cnblogs.com/engineerLF/p/5393054.html
Copyright © 2020-2023  润新知