Aizu - ALDS1_8_A:Binary Search Tree I

链接https://vjudge.net/problem/Aizu-ALDS1_8_A

思路
挑战程序设计竞赛2:算法与数据结构》一书上第169页的练习题。
二叉搜索树的构建,没什么好说的,就说一下二叉搜索树的一些基本知识吧。

  1. 二叉搜索树,又叫二叉排序树、二叉查找树,名字挺多。

  2. 二叉搜索树可以是一颗空树;如果不是空树,那么这颗二叉树必满足:
    左子树上所有的结点值都小于根节点;右子树上所有的结点值都大于根节点。

  3. 二叉搜索树的中序遍历的结果一定是一个递增序列。

了解了这些,这道题就没问题了。
伊丽莎白!

在这里插入图片描述
代码

#include <bits/stdc++.h>

using namespace std;

struct node
{
    int data;
    node *left,*right,*parent;
};

node *tree,*NIL;

void inserts(int x)
{
    node *pre=NIL;
    node *q=tree;
    node *p=(node*)malloc(sizeof(node));

    p->data=x;
    p->left=NIL;
    p->right=NIL;

    while(q!=NIL)
    {
        pre=q;
        if(q->data > p->data)
            q=q->left;
        else
            q=q->right;
    }

    if(tree==NIL)
        tree=p;
    else
    {
        if(pre->data > p->data)
            pre->left=p;
        else
            pre->right=p;
    }
}

void inorder(node *k)
{
    if(k==NIL)
        return;
    inorder(k->left);
    printf(" %d",k->data);
    inorder(k->right);
}

void preorder(node *k)
{
    if(k==NIL)
        return;
    printf(" %d",k->data);
    preorder(k->left);
    preorder(k->right);
}

int main()
{
    int n,num;
    string ss;
    cin>>n;
    for(int i=0; i<n; i++)
    {
        cin>>ss;
        if(ss=="insert")
        {
            cin>>num;
            inserts(num);
        }
        else
        {
            inorder(tree);
            cout<<endl;
            preorder(tree);
            cout<<endl;
        }
    }
}

认真系列×4!

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值