二叉树可视化Java语言实现(完整版,可以运行)

电脑杂谈  发布时间:2020-03-21 21:21:03  来源:网络整理

二叉树的遍历 java_二叉树的遍历算法java_二叉树 java实现

I. 公共类BinaryNode {private E元素;私有BinaryNode 左;私有BinaryNode 权限; public E getElement(){返回元素;} public void setElement(E element){此. element = element;} public BinaryNode getLeft(){向左返回;} public void setLeft(BinaryNode 向左){this.left = left;} public BinaryNode getRight(){向右返回;} public void setRight(BinaryNode right){this.right = right;} //构造树的递归方法二叉树 java实现,单个输出: public static void struct Print(BinaryNode e){if(e.element> 12)return;否则{// System.out.print(“(” + e.element +“)”);左边的BinaryNode =新的BinaryNode (); left.setElement(e.element * 2 +1);右边的BinaryNode =新的BinaryNode (); right.setElement(element * 2 + 2); // System.out.print(“”); // System.out.print(“(” + e.element +“)”); // System.out.print(“ [” + left.getElement()+“” + right.getElement()+“]”);如果(left.getElement()> 12)返回;其他{e.setLeft(le ft); e.setRight(右); structPrint(左); structPrint(right);}}} //递归的遍历遍历public static void inorder(BinaryNode root){if(root!= null){/ / System.out.print(root.getElement()); //调整位置以获得中间订单和后订单.

二叉树 java实现_二叉树的遍历算法java_二叉树的遍历 java

inorder(root.getLeft()); // System.out.print(root.getElement());顺序(root.getRight()); System.out.print(“(” + root.element +“)”);}} //查找叶子(前言)公共静态BinaryNode 搜索(BinaryNode root,int e){if(root! = Null){if(root.getElement()== e){// System.out.print(“ *” + root.element +“ *”); return root;} else {search(root.getLeft(),e);搜索(root.getRight(),e);}}返回root;}公共静态无效性测试(BinaryNode root,int e){BinaryNode parent = new BinaryNode (); int i1 =(e-2)/ 2;父= BinaryNode.search(根,i1); System.out.println(“ *〜!!” + BinaryNode.search(root,i1).getElement()+“ !! *”);} //删除节点(前言): Public static void delete(BinaryNode < Integer> root,int e){//如果(e == 0)BinaryNode.setnull(root);如果(e == 0){root.setLeft(null);根. setRight(null); root.setElement(null);} else {if(root!= null){if(root.getElement()* 2 +1 == e){root.setLeft(null);} else {if(root.getElement( )* 2 + 2 == e){root.setRight(null);} // System.out.print(“ *” + root.element +“ *”);}删除(root. getLeft(),e) ; delete(root.getRight(),e);}}} //在删除中使用setnull; public static void setnull(BinaryNode root){// root.setElement(null); // root.setLeft(null); // root.setRight(null); // System.out.println(root.getElement()); root = null;}}其次,打包Lessons13_9; public class Show1_12 {public static void main(String [] args){BinaryNode root = new BinaryNode (); root.setElement(0); System.out.println(“先前的遍历显示结果: ”); BinaryNode.structPrint(root); System.out.println(); System.out.println(“ ----------------------分界线1 ------- ----------- ---“); System.out.println(“后遍历显示结果: ”); BinaryNode.inorder(根); System.out.println();系统. out.println(“ ----------------------第2行分隔-------------------- -“); System.out.println(“查询结果显示为: ”); BinaryNode.search(root,4); System.out.println(); Sy stem.out.println(“总节点数1: ” + Show1_12.nodes(根)); System.out.println(“ ----------------------第3行------------------ ---“); System.out.println(“删除结果显示: ”); BinaryNode.delete(root,0); //BinaryNode.inorder(root); System.out.println(); System.out.println(“ ----------------------分割线4- ----------------- ---“); //BinaryNode.setnull(root); // root = null; // root = null; //BinaryNode.structPrint(root); //BinaryNode.test(root,7); //BinaryNode.inorder(root); //System.out.println(“总节点数2.1: ” + Show1_12.nodes(root)); // BinaryNode.setnull(root); //BinaryNode.inorder(root); // root = null; //System.out.println(); //System.out.println(“总节点数2: ” + Show1_12.nodes(root));} //总节点数: 静态int节点(BinaryNode 树){if(tree.getElement()== 0)返回0;否则{int left =节点(tree.getLeft()); int right =节点(tree.getRight());返回左+右+ 1; //注意: 必须为+1! !! !! }}}三,—————————————————————————————————————————————— ———————————————————————————————————————————————————— —————————————————————————————————————————————————— —————————————————————————————————————————————————— —————————————————————————————————————————————————— ————————————————————————————————————————————— }}}三,--—————————————————— ---- ----包Lessons13_9;导入java.awt. *;导入java.awt.event. *;导入javax.swing. *;公共类TreeControl扩展了JPanel {private BinaryNode 树; // private JTextField jtfKey = new JTextField(5);私人TreeView View = new TreeView(); //私人JButton jbtInsert = new JButton(“ Insert”); //私人JButton jbtDelete =新的JButton(“ Delete”);公共TreeControl(BinaryNode 树){this.tree = tree; setUI();} private void setUI(){this.setLayout(new BorderLayout());添加(View,BorderLayout.CENTER); JPanel面板=新的JPanel(); //.add(new JLabel(“ Enter a key: ”))); //panel.add(jtfKey); //panel.add(jbtInsert); //panel.add(jbtDelete); //add(panel,BorderLayout.SOUTH); /*jbtInsert.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){int key = Integer.parseInt(jtfKey.getText()); if(BinaryNode.search(tree,key)!= null){JOPtionPanel = showMessageDialog(null,键+“已在树中”);}其他{tree.insert(键); view.repaint();}}); * /} // jbtDelete; TreeView类扩展了JPanel {private int radius = 20; private int vGap = 50;受保护的void paintComponent(图形g){super.paintComponent(g); if(tree!= null){// displayTree(g,tree,getWidth()/ 2,30,getWidth()/ 4); displayTree(g,tree,getWidth()/ 2,30,getWidth()/ 4);)}私有无效的displayTree(图形g,BinaryNode根,int x,int y,int hGap){//此处x,y为节点中心! g.drawOval(x半径,y半径,2 *半径,2 *半径); g.drawString(root.getElement()+“”,x-6,y + 4);如果(root.getLeft()!= null){connectLeftChild(g,x,y,x-hGap,y + vGap); displayTree(g,root.getLeft(),x-hGap,y + vGap,hGap / 2);} if(root. getRight()!= null){connectRightChild(g,x,y,x + hGap,y + vGap); displayTree(g,root.getRight(),x + hGap,y + vGap,hGap / 2);}}私有void connectLeftChild(图形g,int x1,int y1,int x2,int y2){double d = Math. sqrt(vGap * vGap +(x2-x1)*(x2-x1)); int a1 =(int)(半径* vGap / d); int a2 =(int)(半径*(x1-x2)/ d); int x11 =(int)(x1-a2); int y11 =(int)(y1 + a1); int x21 =(int)(x2 + a2); int y21 =(int)(y2-a1); g.drawLine(x11,y11,x21,y21); //g.drawLine(x1,y1,x2,y2);}私有无效connectRightChild(图形g,int x1,int y1,int x2,int y2){double d = Math.sqrt(vGap * vGap +(x2- x1)*(x2-x1)); int a1 =(int)(半径* vGap / d); int a2 =(int)(半径*(x2-x1)/ d); int x11 =(int)(x1 + a2); int y11 =(int)(y1 + a1); int x21 =(int)(x2-a2); int y21 =(int)(y2-a1); g.drawLine(x11二叉树 java实现,y11,x21,y21); //g.drawLine(x1,y1,x2,y2);}}}四个————————————————————————————— —————————————————————包Lessons13_9;导入javax.swing. *;公共类Display_Tree扩展了JApplet {public Display_Tree(){BinaryNode root = new BinaryNode (); root.setElement(0); BinaryNode.structPrint(root);添加(新的TreeControl(根));}}


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-147605-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...