广义表建立二叉树
来源:互联网 发布:好看的男同网络剧电影 编辑:程序博客网 时间:2024/05/19 17:51
//二叉树
class Node
{
public:
char data;
Node *left;
Node *right;
Node():data(' '),left(NULL),right(NULL){}
Node(char ch):data(ch),left(NULL),right(NULL){}
};
//广义表建立二叉树,输入:A(B(D,E(G,)),C(,F))*
void CreateBinTree(Node* & Root,char *str)
{
stack<Node*> s;
Root=NULL;
Node* p=NULL,*t=NULL;
int k,i=0;
while(str[i])
{
switch(str[i])
{
case '(': s.push(p); k=1; break;
case ')': t=s.top(); s.pop(); break;
case ',': k=2; break;
default:
p=new Node(str[i]);
if(Root==NULL) Root=p;
else if(k==1)
{
t=s.top(); t->left=p;
}
else
{
t=s.top(); t->right=p;
}
}
++i;
}
}
//递归先序遍历
void preOrderTraverse(Node *p)
{
if(p != NULL)
{
cout<<p->data;
preOrderTraverse(p->left);
preOrderTraverse(p->right);
}
}
//求节点个数
int Size(Node* root)
{
if(root == NULL) return 0;
return 1 + Size(root->left) + Size(root->right);
}
//求树的高度
int TreeDepth(Node* t)
{
int hl,hr,h;
if(t != NULL)
{
hl = TreeDepth(t->left);
hr = TreeDepth(t->right);
h = hl>hr? hl:hr;
return h+1;
}
return 0;
}
//销毁二叉树
void freeTree(Node*& p)
{
if(p->left != NULL)
freeTree(p->left);
if(p->right != NULL)
freeTree(p->right);
delete(p);
}
class Node
{
public:
char data;
Node *left;
Node *right;
Node():data(' '),left(NULL),right(NULL){}
Node(char ch):data(ch),left(NULL),right(NULL){}
};
//广义表建立二叉树,输入:A(B(D,E(G,)),C(,F))*
void CreateBinTree(Node* & Root,char *str)
{
stack<Node*> s;
Root=NULL;
Node* p=NULL,*t=NULL;
int k,i=0;
while(str[i])
{
switch(str[i])
{
case '(': s.push(p); k=1; break;
case ')': t=s.top(); s.pop(); break;
case ',': k=2; break;
default:
p=new Node(str[i]);
if(Root==NULL) Root=p;
else if(k==1)
{
t=s.top(); t->left=p;
}
else
{
t=s.top(); t->right=p;
}
}
++i;
}
}
//递归先序遍历
void preOrderTraverse(Node *p)
{
if(p != NULL)
{
cout<<p->data;
preOrderTraverse(p->left);
preOrderTraverse(p->right);
}
}
//求节点个数
int Size(Node* root)
{
if(root == NULL) return 0;
return 1 + Size(root->left) + Size(root->right);
}
//求树的高度
int TreeDepth(Node* t)
{
int hl,hr,h;
if(t != NULL)
{
hl = TreeDepth(t->left);
hr = TreeDepth(t->right);
h = hl>hr? hl:hr;
return h+1;
}
return 0;
}
//销毁二叉树
void freeTree(Node*& p)
{
if(p->left != NULL)
freeTree(p->left);
if(p->right != NULL)
freeTree(p->right);
delete(p);
}
- 广义表建立二叉树
- 广义表建立二叉树
- 广义表法建立二叉树
- 输入二叉树的广义表建立二叉树
- 输入二叉树的广义表形式建立二叉树+C++
- 广义表创建二叉树
- 二叉树的建立(广义表)及3种遍历
- 二叉树的广义表形式
- 广义表的二叉树的形式
- 二叉树的广义表形式
- 使用广义表创建二叉树
- 数据结构之广义表和二叉树
- 广义表和二叉树的转换
- 根据广义表构建二叉树
- 建立广义表的算法
- 二叉树采用二叉链表结构表示。设计并实现如下算法:输入某棵二叉树的广义表形式,建立该二叉树,并按层次遍历该二叉树。
- 利用广义表非递归构造二叉树
- 数据结构与算法简记:根据广义表构建二叉树
- Hql的select 语句返回Ilist<object[]>类型,如何转换为映射类型
- HDU 1180 诡异的楼梯
- A. Lucky Division
- 中国围棋借应氏杯而涅槃
- log4j中配置日志文件几种方式
- 广义表建立二叉树
- apk文件反编译工具和步骤小结
- 新手的一些废话
- 百度称政府网站最易遭攻击
- Perl LWP 模块安装及遇到的问题
- Ubuntu12.04 64位下打开windows txt 乱码的解决方式
- 网桥实现与分析
- ServletContextListener作用
- 最大公约数