⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 treeutils.java

📁 java算法大全
💻 JAVA
字号:
import java.awt.*;class TreeUtils extends Node {    Font bigFont, smallFont, tinyFont, hugeFont;    DrawingPanel drawingPanel;    public TreeUtils(DrawingPanel drawingPanel) {	this.bigFont = drawingPanel.bigFont;	this.smallFont = drawingPanel.smallFont;	this.tinyFont = drawingPanel.tinyFont;	this.hugeFont = drawingPanel.hugeFont;	this.drawingPanel = drawingPanel;    }    public int treeWidth(Node node) {        return (rightMostPosn(node) - leftMostPosn(node));    }     public int leftMostPosn(Node node) {        if (node.isLeaf())            return node.x;        else            return leftMostPosn(node.getLeftNode());    }     public int rightMostPosn(Node node) {        if (node.isLeaf())            return (node.x + 20);        else            return rightMostPosn(node.getRightNode());    }     public int treeHeight(Node node) {        return (bottomMostPosn(node) - node.y);    }     public int bottomMostPosn(Node node) {        if (node.isLeaf())            return (node.y + 30);        else {            int rightBottom = bottomMostPosn(node.getRightNode());            int leftBottom = bottomMostPosn(node.getLeftNode());            return (rightBottom > leftBottom ? rightBottom : leftBottom);        }    }    public void drawLeafNode(Graphics g, int x, int y,                String label, int weight) {        g.setColor( Color.blue );        if (label.length() > 0) {            g.fillRect(x, y, label.length() * 20, 30);            //g.setColor( Color.white );            //g.setFont(hugeFont);            //g.drawString(label, x+3, y+12);            g.setFont(tinyFont);            g.setColor( Color.yellow );            g.drawString(""+weight, x+2, y+25);        }    }    public void drawLeafNode(Graphics g, Node node) {        int x = node.x; int y = node.y;        String label = node.getLabel(); int weight = node.getWeight();        if (node.highlight) {            g.setColor(Color.black);        } else            g.setColor( Color.blue );        if (label.length() > 0) {            g.fillRect(x, y, label.length() * 20, 30);            //g.setColor( Color.white );            //g.setFont(hugeFont);            //g.drawString(label, x+3, y+12);            g.setFont(tinyFont);            g.setColor( Color.yellow );            g.drawString(""+weight, x+2, y+25);        }    }     public void drawNode(Graphics g, Node node) {        if (node.highlight)            g.setColor(Color.black);        else            g.setColor( Color.red );        g.fillRect(node.x-3, node.y, 27, 30);        g.setColor( Color.white );        g.drawString(""+node.getWeight(), node.x-1, node.y+25);         // draw links to children        g.setColor( Color.black );        g.drawLine(node.x + 6, node.y + 30,                node.getLeftNode().x + 10, node.getLeftNode().y);	if (node.highlightLeft) {            g.drawLine(node.x + 5, node.y + 30,                node.getLeftNode().x + 9, node.getLeftNode().y);            g.drawLine(node.x + 4, node.y + 30,                node.getLeftNode().x + 8, node.getLeftNode().y);	}        g.drawLine(node.x + 14, node.y + 30,                node.getRightNode().x + 10, node.getRightNode().y);	if (node.highlightRight) {            g.drawLine(node.x + 15, node.y + 30,                node.getRightNode().x + 11, node.getRightNode().y);            g.drawLine(node.x + 16, node.y + 30,                node.getRightNode().x + 12, node.getRightNode().y);	}        if (drawingPanel.encoding) {            // draw 0/1 on links            g.setColor( Color.black );            g.setFont( smallFont );            g.drawString("0",                node.getLeftNode().x + 6,                node.getLeftNode().y);            g.drawString("1",                node.getRightNode().x + 10,                node.getRightNode().y);        }    }    public void moveNode(Node node, int dx, int dy) {        node.x += dx;        node.y += dy;        if (!node.isLeaf()) {            moveNode(node.getLeftNode(), dx, dy);            moveNode(node.getRightNode(), dx, dy);        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -