[Java]递归画树
来源:互联网 发布:中文模糊匹配算法 编辑:程序博客网 时间:2024/05/15 11:54
package cn.test.javase;import java.awt.BasicStroke;import java.awt.Color;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Point;import java.util.ArrayList;import java.util.Random;import javax.swing.JFrame;import javax.swing.JPanel;public class PaintTree {private static JPanel panel = null;private static ArrayList<Branch> list = new ArrayList<Branch>();private static int RANGE = 128;public static void main(String[] args) {JFrame frame = JFrameFactory.createJFrame("PaintTree");panel = new JPanel() {private static final long serialVersionUID = -3255059852702250875L;public void paint(Graphics g) {Graphics2D d = (Graphics2D)g;if (!(list == null || list.size() == 0)) {for (Branch branch : list) {d.setStroke(new BasicStroke((float) ((8 - branch.level) * 0.5)));d.setColor(Color.black);d.drawLine(branch.start.x, branch.start.y,branch.end.x, branch.end.y);}}}};frame.add(panel);frame.setLocationRelativeTo(null);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);list.add(new Branch(0, new Point(250, 400), new Point(250, 300)));createTree(list, 1, 1, 8);panel.repaint();}private static void createTree(ArrayList<Branch> list, int direction,int level, int levelAll) {// 生成树// 1 23 4567if (level == levelAll) {return;} else {for (int i = 0; i < Math.pow(2, level); i++) {int position = (int) (Math.pow(2, level) - 1 + i);Branch parent = list.get(position / 2);int way = level == 1 ? 0 : new Random().nextInt(4);list.add(new Branch(level,parent.end,way == 0 ? new Point(parent.end.x- new Random().nextInt(RANGE), parent.end.y- new Random().nextInt(RANGE)): way == 1 ? new Point(parent.end.x+ new Random().nextInt(RANGE),parent.end.y+ new Random().nextInt(RANGE)): way == 2 ? new Point(parent.end.x- new Random().nextInt(RANGE),parent.end.y+ new Random().nextInt(RANGE)): new Point(parent.end.x+ new Random().nextInt(RANGE),parent.end.y- new Random().nextInt(RANGE))));list.add(new Branch(level,parent.end,way == 0 ? new Point(parent.end.x+ new Random().nextInt(RANGE), parent.end.y- new Random().nextInt(RANGE)): way == 1 ? new Point(parent.end.x- new Random().nextInt(RANGE),parent.end.y+ new Random().nextInt(RANGE)): way == 2 ? new Point(parent.end.x- new Random().nextInt(RANGE),parent.end.y- new Random().nextInt(RANGE)): new Point(parent.end.x+ new Random().nextInt(RANGE),parent.end.y+ new Random().nextInt(RANGE))));}RANGE *= 0.618;createTree(list, direction, level + 1, levelAll);}}}class Branch {public int level;// 序号public Point start;// 起始点public Point end;// 重点public Branch(int level, Point start, Point end) {super();this.level = level;this.start = start;this.end = end;}}
阅读全文
0 0
- [Java]递归画树
- java 递归树
- java 递归树结构
- java递归树
- java 树递归
- 递归树查询-java
- java递归树
- java递归生成树
- JAVA递归、非递归遍历二叉树
- java递归,非递归遍历二叉树
- JAVA递归、非递归遍历二叉树
- java 实现二叉树【递归/非递归】
- java 递归实现二叉树
- 递归实现二叉树 JAVA
- JAVA 实现二叉树 递归
- JAVA递归生成tree树
- java 递归创建二叉树
- java 递归查询组织机构树
- Linux文件与目录的三种时间状态(mtime,atime,ctime)区别
- PXE, DHCP, TFPT 实现自动化安装 CentOS
- maven学习四:maven集成jetty插件发布web项目
- 三个实例演示 Java Thread Dump 日志分析
- HTML学习,随便写点东西
- [Java]递归画树
- MFC消息学习总结
- 编程的智慧
- ARC079
- Google Brain团队的研究方法是什么?
- sqrt的快速算法 --- (参考)
- 权限管理系统 AOP切面编程控制权限之切面类
- linus下的source命令的用法
- 主流深度学习开源工具汇总