二叉树的插入与中序遍历

//定义二叉树节点
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);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值