文档章节

二叉排序树java实现

随风1993
 随风1993
发布于 2017/05/25 17:08
字数 320
阅读 2
收藏 0

import java.util.Scanner;

/**
 * @author tj
 * 
        题目描述:
        
            有一棵树,输出某一深度的所有节点,有则输出这些节点,无则输出EMPTY。该树是完全二叉树。
        
        输入:
        
            输入有多组数据。
            每组输入一个n(1<=n<=1000),然后将树中的这n个节点依次输入,再输入一个d代表深度。
        
        输出:
        
            输出该树中第d层得所有节点,节点间用空格隔开,最后一个节点后没有空格。
        
        样例输入:
        
            4
            1 2 3 4
            2
       
                      样例输出:

            2 3

 */
public class PerfectTree {
    
    public PerfectTree left;
    public PerfectTree right;
    public int value;
    public int level;
    
    public static void main(String[] args){
        Scanner cin = new Scanner(System.in);
        
        while(cin.hasNext()){
            
            PerfectTree tree = new PerfectTree();
            int n = cin.nextInt();
            
            int[] mar = new int[n];
            for(int i=0;i<n;i++){
                mar[i] = cin.nextInt();
            }
            int k = cin.nextInt();
            
            tree.value = mar[0];
            tree.level = 1;
            tree.createTree(mar,k);
            tree.middleList();
            
        }
    }

    private void createTree(int[] mar,int k) {
        // TODO Auto-generated method stub
        if(mar.length>=this.value*2){
            this.left = new PerfectTree();
            this.left.value = this.value*2;
            this.left.level = this.level+1;
            this.left.createTree(mar,k);
        }
        
        if(mar.length>=(this.value*2)+1){
            this.right = new PerfectTree();
            this.right.value = this.value*2+1;
            this.right.level = this.level+1;
            this.right.createTree(mar,k);
        }
    }
    
    public void prelist(){
        System.out.println(this.value);
        if(this.left != null){
            this.left.prelist();
        }
        
        if(this.right !=null){
            this.right.prelist();
        }
    }
    
    //中序遍历
    public void middleList(){
            if(this.left != null){
                this.left.middleList();
            }
            
            System.out.println(this.value+"| "+this.level);
            
            if(this.right !=null){
                this.right.middleList();
            }
    }
    //后序遍历
    public void afterList(){
            
            if(this.left != null){
                this.left.afterList();
            }
            
            if(this.right !=null){
                this.right.afterList();
            }
            
            System.out.println(this.value);
        }

}
 

© 著作权归作者所有

共有 人打赏支持
随风1993
粉丝 0
博文 9
码字总数 2110
作品 0
普陀
后端工程师
数据结构笔记--二叉查找树概述以及java代码实现

一些概念:   二叉查找树的重要性质:对于树中的每一个节点X,它的左子树任一节点的值均小于X,右子树上任意节点的值均大于X.   二叉查找树是java的TreeSet和TreeMap类实现的基础.   由于树...

冬至饮雪
2016/05/14
0
0
二叉树算法笔记:二叉排序树(二叉搜索树) in java

本内容仅贴出三链二叉树的操作(在二叉树的两篇文章里已经有了如下代码,完全相同,只是这里把二叉排序树的代码提取出来而已)。 二叉树算法笔记:二叉树基础操作(三链二叉树) in java http:...

CheN_exe
2014/01/26
0
0
一文掌握关于Java数据结构所有知识点(欢迎一起完善)

在我们学习Java的时候,很多人会面临我不知道继续学什么或者面试会问什么的尴尬情况(我本人之前就很迷茫)。所以,我决定通过这个开源平台来帮助一些有需要的人,通过下面的内容,你会掌握系...

snailclimb
05/08
0
0
【二叉搜索树】简单二叉搜索树的Java实现,还没添加很多功能

正文之前 重温算法,今天看了下《算法导论》,二叉搜索树的内容,总算没有以前看的时候的那种晦涩感了。。。明天继续加油!!!今天大概用Java实现了下二叉搜索树的建立和输出,至于检索这个...

HustWolf
07/12
0
0
2017 届 今日头条校招 Android 面试之成功篇

记录今日头条校招面试经历,废话不多说,直接上问题 一面-电面(34 min) 专业方向及其内容; 操作系统进程和线程的区别; 嵌入式底层了解没; 多核里面进程和线程的表现; APK 包含了哪些东西...

Hello_Google
2016/10/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

理解数据库的4种隔离级别

本文转自:http://m.blog.csdn.net/article/details?id=51924963 数据库事务的隔离级别有4种,由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。而且,...

初雪之音
47分钟前
1
0
主流的消息队列MQ比较,详解MQ的4类应用场景

目前主流的MQ 1.ZeroMQ 号称最快的消息队列系统,尤其针对大吞吐量的需求场景。 扩展性好,开发比较灵活,采用C语言实现,实际上只是一个socket库的重新封装,如果做为消息队列使用,需要开发...

游人未归
今天
4
0
React 服务器渲染原理解析与实践

网盘下载地址 React 服务器渲染原理解析与实践 本套课程,讲解了React中SSR技术的整个搭建思路及流程,完整的从原理上讲清楚了SSR的概念,重点在于讲解编写SSR框架遇到的各种知识点,以及细节...

qq__2304636824
今天
4
0
Jenkins使用

clean install -Dmaven.test.skip=true 系统设置 全局工具配置 其他的配置类似 构建项目配置

1713716445
今天
2
0
多线程

1. 多线程概念。并发和并行的概念。 多线程指的是一段时间内cpu同时执行多个线程。一个程序至少运行>=1个进程,进程就是运行中的程序,而一个进程至少运行>=1个线程,线程是操作系统能调度的...

鱼想吃肉
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部