文档章节

二叉排序树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
2017 届 今日头条校招 Android 面试之成功篇

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

Hello_Google
2016/10/26
0
0
【二叉搜索树】简单二叉搜索树的Java实现,还没添加很多功能

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

HustWolf
07/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

码云项目100,水一发

简单回顾一下: 早期构想最多的,是希望能将PHP一些类和编码分区做得更细,所以很多尝试。但不得不说,PHP的功能过于单一,是的,也许写C/C++扩展,可以解决问题,那我为什么不用C#或者Golan...

曾建凯
21分钟前
1
0
Spring应用学习——AOP

1. AOP 1. AOP:即面向切面编程,采用横向抽取机制,取代了传统的继承体系的重复代码问题,如下图所示,性能监控、日志记录等代码围绕业务逻辑代码,而这部分代码是一个高度重复的代码,也就...

江左煤郎
今天
4
0
eclipse的版本

Eclipse各版本代号一览表 Eclipse的设计思想是:一切皆插件。Eclipse核心很小,其它所有功能都以插件的形式附加于Eclipse核心之上。 Eclipse基本内核包括:图形API(SWT/Jface),Java开发环...

mdoo
今天
3
0
SpringBoot源码:启动过程分析(一)

本文主要分析 SpringBoot 的启动过程。 SpringBoot的版本为:2.1.0 release,最新版本。 一.时序图 还是老套路,先把分析过程的时序图摆出来:时序图-SpringBoot2.10启动分析 二.源码分析 首...

Jacktanger
今天
4
0
小白带你认识netty(二)之netty服务端启动(上)

上一章 中的标准netty启动代码中,ServerBootstrap到底是如何启动的呢?这一章我们来瞅下。 server.group(bossGroup, workGroup);server.channel(NioServerSocketChannel.class).optio...

天空小小
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部