九度 1201 -二叉排序数遍历- 二叉排序树「建议收藏」

九度 1201 -二叉排序数遍历- 二叉排序树

大家好,又见面了,我是全栈君。

这个是道正统的树构建和遍历题。一開始还想用数组构建取代一下水过去,可是发现不行,仅仅好老老实实的用指针了。二叉排序树和遍历方法假设不清楚定义的话。最好去看看数据结构书复习下。

#include<stdio.h>

struct node{
    node *l;
    node *r;
    int val;
    node(int a):val(a),l(NULL),r(NULL){};
};
node *root;
int n;
void qian(node *p){
    printf("%d ",p->val);
    if(p->l!=NULL)qian(p->l);
    if(p->r!=NULL)qian(p->r);
}
void zhong(node *p){
    if(p->l!=NULL)zhong(p->l);
    printf("%d ",p->val);
    if(p->r!=NULL)zhong(p->r);
}
void hou(node *p){
    if(p->l!=NULL)hou(p->l);
    if(p->r!=NULL)hou(p->r);
    printf("%d ",p->val);
}
 
int main(){
     
    int val;
    node *p;
    while(~scanf("%d",&n)){
        root=NULL;
        for(int i=0;i<n;i++){
            scanf("%d",&val);
            if(i==0){
                root=new node(val);
                continue;
            }
            p=root;
            while(1){
                if(val==p->val)break;
                else if(val<p->val){
                    if(p->l==NULL){
                        p->l=new node(val);
                        break;
                    }
                    else{
                        p=p->l;continue;
                    }
                }
                else if(val>p->val){
                    if(p->r==NULL){
                        p->r=new node(val);
                        break;
                    }
                    else{
                        p=p->r;continue;
                    }
                }
            }
        }   
        qian(root);
        printf("\n");
        zhong(root);
        printf("\n");
        hou(root);
        printf("\n");
    }
    return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116527.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm英文读音_pycharm英文界面翻译

    pycharm英文读音_pycharm英文界面翻译使用的是PyCharm2018.3.4代码的自动补全在PyCharm中找到PowerSaveMode选项,将前面的对勾去掉。在左上角File的展开栏的倒数第二行在PyCharm的最右下角有个????的样子(在????旁边),单击点开就可看到PowerSaveMode选项在这个Currentinspectionprofile中可以设置HighlightingLevel即检查代码严格程度。(过多的不…

    2022年8月27日
    6
  • PPT 中插入域代码公式的方法

    PPT 中插入域代码公式的方法PPT中插入域代码公式的方法插入对象,选择Word*Document,或OpenDocument都可以; 在新打开的页面中,选择插入文档部件,再选择域代码; 在域代码选项中,选择Eq,具体语法如下。域代码:Eq(公式)域注意:我们希望能够尽快以你的语言为你提供最新的帮助内容。本页面是自动翻译的,可能包含语法错误或不准确之处。我们的目的是使此内容能对你有所帮助。可以在本页面底部告诉我们此信息是否对你有帮助吗?请在此处查看本文的英文版本以…

    2022年6月1日
    232
  • sublimetext3 激活码(最新序列号破解)

    sublimetext3 激活码(最新序列号破解),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    1.2K
  • Jlink-10 pin 的定义(stm32使用)官方定义

    Jlink-10 pin 的定义(stm32使用)官方定义因为在网上找了好久才找到正确的接法,所以专门记载了下来,因为stm32芯片这几个功能引脚会内置上拉电阻,所以不需要再外接电阻了。转载于:https://www.cnblogs.com/dzswise/p/7523420.html…

    2022年5月28日
    27
  • html获取表单提交数据_提交表单的两种方法

    html获取表单提交数据_提交表单的两种方法转载于:https://blog.csdn.net/yongwoozzang/article/details/83029128HttpURLConnectionx-www-form-urlencodedpublicstaticStringPost(StringhttpUrl,Stringdata){ PrintWriterout=null; InputStr…

    2022年10月6日
    2
  • SQL Server——数据库创建及修改[通俗易懂]

    SQL Server——数据库创建及修改[通俗易懂]文章目录一、SQL Server数据库的相关概念1、逻辑数据库2、物理数据库二、SQL Server数据库的基本操作1、使用SQL Server Management Studio (创建/修改/删除)数据库2、使用SQL语句(创建/修改/删除)数据库【数据库文件的类型】【主要】【次要】【事务日志】文件组1.主文件组(PRIMARY)2.用户定义文件组【文件组特性】一、SQL Server数据库…

    2022年8月18日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号