//定义二叉树节点
struct binaryTreeNode
{
//左孩子指针
binaryTreeNode *left;
//右孩子指针
binaryTreeNode *right;
//数据
int data;
};
//创建新的节点,节点的值为value
binaryTreeNode *newNode(int value){
binaryTreeNode *newNode = new binaryTreeNode;
newNode->data = value;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
//二叉树的插入
binaryTreeNode *insert(binaryTreeNode *T, int value){
//根节点
binaryTreeNode *root = T;
//根节点为空
if (T == NULL)
{
//创建新的节点
T = newNode(value);
return T;
}
//插入位置的双亲节点
binaryTreeNode *parent;
//查找插入位置
while (T != NULL)
{
parent = T;
if (value < T->data)
{
T = T->left;
}
else
{
T = T->right;
}
}
//将value插入到双亲节点的子节点中
if (value > parent->data)
{
parent->right = newNode(value);
}
else
{
parent->left = newNode(value);
}
return root;
}
//二叉树的遍历(中序)
void inOrderTraverse(binaryTreeNode *T){
//判断是否为空
if (T != NULL)
{
//递归遍历左子树
inOrderTraverse(T->left);
//访问根节点
cout<<T->data<<endl;
//递归遍历右子树
inOrderTraverse(T->right);
}
}