文档章节

二叉排序树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
普陀
后端工程师
私信 提问
《数据结构与算法系列》合集整理

《数据结构与算法系列》合集整理 整理来自博客园skywang12345,以下摘自作者介绍: “最近抽空整理了"数据结构和算法"的相关文章。在整理过程中,对于每种数据结构和算法分别给出"C"、"C++"...

kaixin_code
2018/12/01
0
0
可视化的数据结构和算法

还记得之前发布过的那个关于可视化排序的文章吗?在网上又看到了一个旧金山大学David Galles做的各种可视化的数据结构和基本算法的主页,网址在这里,大家可以看看。我把这个页面的目录列在下...

戴威
2011/05/12
962
5
数据结构笔记--二叉查找树概述以及java代码实现

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

冬至饮雪
2016/05/14
0
0
可视化的数据结构和算法

还记得之前发布过的那个关于可视化排序的文章吗?在网上又看到了一个旧金山大学David Galles做的各种可视化的数据结构和基本算法的主页,网址在这里,大家可以看看。我把这个页面的目录列在下...

戴威
2011/05/12
16
0
二叉树算法笔记:二叉排序树(二叉搜索树) in java

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

CheN_exe
2014/01/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Cookie 显示用户上次访问的时间

import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.serv......

gwl_
今天
1
0
网络编程

第14天 网络编程 今日内容介绍  网络通信协议  UDP通信  TCP通信 今日学习目标  能够辨别UDP和TCP协议特点  能够说出UDP协议下两个常用类名称  能够说出TCP协议下两个常用类名称...

stars永恒
今天
1
0
二进制相关

二进制 众所周知计算机使用的是二进制,数字的二进制是如何表示的呢? 实际就是逢二进一。比如 2 用二进制就是 10。那么根据此可以推算出 5的二进制等于 10*10+1 即为 101。 在计算机中,负数以...

NotFound403
昨天
3
0
day22:

1、写一个getinterface.sh 脚本可以接受选项[i,I],完成下面任务: 1)使用格式:getinterface.sh [-i interface | -I ip] 2)当用户使用-i选项时,显示指定网卡的IP地址;当用户使用-I选项...

芬野de博客
昨天
2
0
Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现

自Spring Cloud Alibaba发布第一个Release以来,就备受国内开发者的高度关注。虽然Spring Cloud Alibaba还没能纳入Spring Cloud的主版本管理中,但是凭借阿里中间件团队的背景,还是得到不少...

程序猿DD
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部