Q114第一颗二叉查找树(链式)

—恢复内容开始—

输入n,然后n个树,建立二叉查找树。从小到大输出每个节点的左右子树,空输出#

《Q114第一颗二叉查找树(链式)》

///修改了根节点无用的情况

#include<cstdio>
#include<iostream>
using namespace std;
typedef struct node{
    int data;
    struct node *lchild,*rchild;
}NODE;
bool isempty=true;
void input(NODE *root,int value){
    if(isempty)
    {
        root->data=value;
        isempty=false;
    }
    if(value==root->data){
        return;
    }
    else if(value>root->data){
        if(root->rchild==NULL){
            root->rchild=new NODE;
            root->rchild->data=value;
            root->rchild->lchild=NULL;
            root->rchild->rchild=NULL;
        }
        else{
            input(root->rchild,value);
        }
    }
    else{
        if(root->lchild==NULL){
            root->lchild=new NODE;
            root->lchild->data=value;
            root->lchild->lchild=NULL;
            root->lchild->rchild=NULL;
        }
        else{
            input(root->lchild,value);
        }
    }
}
int n;
void preorder(NODE *root){
    if(root==NULL)return;
    preorder(root->lchild);

        printf("%d(",root->data);
        if(root->lchild==NULL){
            printf("#");
        }
        else{
            printf("%d",root->lchild->data);
        }
        if(root->rchild==NULL){
            printf(", #)\n");
        }
        else{
            printf(", %d)\n",root->rchild->data);
        }


    preorder(root->rchild);
}
int main(){
    NODE *root=new NODE;
    root->lchild=root->rchild=NULL;
    int a;
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d",&a);
        input(root,a);
    }
    preorder(root);
    return 0;
}

  

 

    原文作者:Q1143316492
    原文地址: https://www.cnblogs.com/Q1143316492/p/6260897.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞