递归创建和输出M叉树
来源:互联网 发布:windows xp共享文件夹 编辑:程序博客网 时间:2024/05/20 07:13
设 M 叉树采用列表法表示,即每棵子树对应一个列表,列表的结构为:子树根结点的值部分 (设为一个字符) 和用“( )”,括起来的各子树的列表 (如有子树的话) ,各子列表间用“,”,分隔。例如下面的三叉树可用列表 a( b( c,d ),e,f( g,h,i ))表示。
#include<iostream>//#include<stdio.h>using namespace std;#define M 3typedef struct node{char val;struct node* subTree[M];}NODE;char buf[255],*str = buf;NODE * d = NULL;NODE * makeTree(){int k;NODE *s;s = new NODE();s->val = *str++;for(k=0;k<M;k++){s->subTree[k] = NULL;}if(*str=='('){k = 0;do{str++;s->subTree[k] = makeTree();if(*str==')'){str++;break;}k = k + 1;}while(k<M);}return s;}void walkTree(NODE * t){if(t!=NULL){cout<<t->val;if(t->subTree[0]==NULL)return ;cout <<"("; for(int i=0;i<M;i++){walkTree(t->subTree[i]);if(i!=M-1&&t->subTree[i+1]!=NULL)cout << ',';}cout << ')';}}int main(){cout << "Enter exp: ";cin >> str;d = makeTree();walkTree(d);cout << endl;return 0;}
- 递归创建和输出M叉树
- 简单二叉树的创建和输出(递归)
- c语言链表_递归_创建和输出
- 递归创建并输出链表
- 使用递归和非递归求f(m,n)
- 输入m,n,输出最大公约数和最小公倍数。
- 树的递归创建和递归遍历
- 二叉树递归创建和递归遍历
- 采用递归法生成M叉树
- 递归创建文件和文件夹
- golang 调度之wakep和M创建
- 两种方法实现单向链表的创建、遍历、删除、查找、逆序输出(循环法和递归法)
- 递归输出全排列和全组合
- shell递归输出文件名和目录名
- JAVA递归和非递归输出字符串的全排列
- 二叉树遍历输出的递归和非递归实现
- Ackerman函数A(m, n)的递归和循环实现
- DOM4j创建和输出xml
- HDU 1088 ( Write a simple HTML Browser )
- C语言和设计模式(策略模式)
- 应对32位程序在64位系统上访问注册表和文件自动转向问题
- 巨头“心血之作”终失败(一):苹果Apple TV
- c++中,引用和指针的区别
- 递归创建和输出M叉树
- H3C的家族史——从3COM到华为到惠普(HP)(英文)
- 大一上学期C++第11周实验报告(二)学会使用循环控制语句解决实际问题
- 整数拆分问题
- 轻松查看attachEvent方法绑定的事件处理函数(如jQuery的bind方法绑定的函数)
- sicily 1021
- 解决文字过长,表格被撑大,自动换行,文字超出,切割(关于table内文字换行 )
- windows 64位操作系统判断及重定向Redirection 示例
- Nmap的扫描阶段