(2)
二叉树的存储结构:
先序遍历二叉树的操作:
中序遍历
若不为空,则(lchild,root,rchild)
后序遍历
若不为空,则(lchild,rchild,root)
代码:
BiTnode_tree.h
#include<iostream>
using namespace std;
struct BiTnode
{
char
data;
BiTnode
*
lchild
,
*
rchild;
};
//注:BiTonde*,是结点指针,指向下一个节点
class tree
//先序二叉树
{
private :
BiTnode
*
t;
public :
tree();
void
creat(
BiTnode
*
&p);
//建立一个二叉树,注意要用引用,这个p的节点也和t一样指向同个地方
void
visit();
void
show_tree(
BiTnode
* p);
void
change();
void
swap_left_right(
BiTnode
*p );
};
using namespace std;
struct BiTnode
{
};
//注:BiTonde*,是结点指针,指向下一个节点
class tree
{
private :
public :
};
BiTnode_tree.cpp
#include"BiTnode_tree.h"
tree :: tree()
{
t
=
new
BiTnode;
creat(
t);
}
void tree :: creat( BiTnode * &p)
//建立一个二叉树
{
char
c;
cin
.
get(
c);
if(
c
==
' ')p
=
NULL;
else
{
p
=
new
BiTnode;
p
->
data
=
c;
creat(p
->
lchild);
creat(p
->
rchild);
}
}
void tree :: visit()
{
show_tree(
t);
}
void tree :: show_tree( BiTnode * p)
{
if(p)
{
cout
<<p
->
data;
show_tree(p
->
lchild);
show_tree(p
->
rchild);
}
}
void tree :: change()
{
swap_left_right(
t);
}
tree :: tree()
{
}
void tree :: creat( BiTnode * &p)
{
}
void tree :: visit()
{
}
void tree :: show_tree( BiTnode * p)
{
}
void tree :: change()
{
}
void tree :: swap_left_right( BiTnode *p )
{
}
main.cpp
#include"BiTnode_tree.h"
int main()
{
cout
<<
"建立前序二叉树:"
<<
endl;
tree
T;
cout
<<
"交换前:"
<<
endl;
T
.
visit();
//交换二叉树的左右节点:
cout
<<
endl;
cout
<<
"执行左右节点的交换!"
<<
endl;
T
.
change();
//前序便历二叉树
cout
<<
"交换后:"
<<
endl;
T
.
visit();
cout
<<
endl;
}
int main()
{
}