一颗二叉树
创建结点
typedef struct node
{
int data;
node *lchild;
node *rchild;
node() :lchild(NULL), rchild(NULL){}
}Tree,*tree;
建树
tree bulid(tree root, int val)
{
if (root==NULL)
{
root = new Tree;
root->data = val;
}
if (val<root->data)
{
root->lchild=bulid(root->lchild, val);
}
if (val>root->data)
{
root->rchild=bulid(root->rchild, val);
}
return root;
}
遍历(前序、中序、后序遍历其实代码类似,这边就给出中序遍历)
void mid(tree root)
{
if (root!=NULL)
{
mid(root->lchild);
cout << root->data;
mid(root->rchild);
}
}
具体测试:
#include<iostream>
using namespace std;
typedef struct node
{
int data;
node *lchild;
node *rchild;
node() :lchild(NULL), rchild(NULL){}
}Tree,*tree;
tree bulid(tree root, int val)
{
if (root==NULL)
{
root = new Tree;
root->data = val;
}
if (val<root->data)
{
root->lchild=bulid(root->lchild, val);
}
if (val>root->data)
{
root->rchild=bulid(root->rchild, val);
}
return root;
}
void mid(tree root)
{
if (root!=NULL)
{
mid(root->lchild);
cout << root->data;
mid(root->rchild);
}
}
void main()
{
tree T = NULL;
T = bulid(T, 1);
T = bulid(T, 2);
T = bulid(T, 4);
T = bulid(T, 3);
T = bulid(T, 7);
T = bulid(T, 6);
mid(T);
while (true)
{
}
}