Java递归实现树状结构

只是简单实现树状结构,后续进行补充。
package com.tree.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Test {
	public static void main(String[] args){
		showTree();
	}
     public static void showTree(){
       Connection conn=null;
 	   ResultSet  rs = null;
 	   Statement stmt=null;
 	   try {
		Class.forName("com.mysql.jdbc.Driver");
		conn=DriverManager.getConnection("jdbc:mysql://localhost/tree?user=root&password=root");
		/*stmt=conn.createStatement();
		rs=stmt.executeQuery("select * from country where pid=0");
		while(rs.next()){
			System.out.println(rs.getString("actile"));*/
			tree(conn,0,0);
 	  // }
	} catch (Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}finally {
		try {
			if(rs != null) {
				rs.close();
				rs = null;
			}
			if(stmt != null) {
				stmt.close();
				stmt = null;
			}
			if(conn != null) {
				conn.close();
				conn = null;
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
     }
     public static void tree(Connection conn,int id,int level){
    		Statement stmt = null;
    		ResultSet rs = null;
    		
    		
    		
    		try {
    			stmt = conn.createStatement();
    			String sql = "select * from country where pid = " + id;
    			rs = stmt.executeQuery(sql);
    			while(rs.next()) {
    				StringBuffer strPre = new StringBuffer("");
    	    		for(int i=0; i<level; i++) {
    	    			strPre.append("    ");
    	    		}
    				System.out.println(strPre + rs.getString("actile"));
    				if(rs.getInt("is_leaf") != 0)
    					tree(conn, rs.getInt("id"), level + 1);
    			}
    			
    		} catch (SQLException e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				if(rs != null) {
    					rs.close();
    					rs = null;
    				}
    				if(stmt != null) {
    					stmt.close();
    					stmt = null;
    				}
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    		}
    	}
数据库
create database tree;

use tree;

create table country 
(
id int primary key auto_increment,
pid int,
actile varchar(40),
is_leaf int 
);

insert into country values(1,0, '中国',1);
insert into country values(2,1,'北京',0);
insert into country values(3,0,'美国',1);
insert into country values(4,3,'纽约',0);
insert into country values(5,1,'浙江',1);
insert into country values(6,5,'杭州',1);
insert into country values(7,6,'滨江',0);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值