二叉查找树之插入算法
程序员文章站
2022-07-14 08:44:17
...
package com.pb.datastructure.find; /** * 二叉查找树之插入算法 * @author Administrator */ public class BinarySortTree { private static BinarySortTree tree = new BinarySortTree(); private Node root;//根結點 public void add(int data){ if(null==root){ root=new Node(data,null,null);//如果根结点为空,直接插入根结点 }else{ addTree(root,data); } } /** * @param args */ public static void main(String[] args) { createTree();//创建二叉查找树 System.out.println("插入节点17"); tree.add(17); tree.show(); } /** * 插入节点 * @param root * @param data */ private void addTree(Node root,int data){ if(root.data>data){ if(root.left==null){ root.left=new Node(data,null,null);//如果根节点左子树为空,则直接插入左子树 }else{ addTree(root.left,data); } }else{ if(root.right==null){ root.right=new Node(data,null,null);//如果根节点的右子树为空,则直接插入右子树 }else{ addTree(root.right,data); } } } /** * 控制台显示 */ public void show(){ System.out.println("中序遍历结果为:"); showTree(root); } /** * 显示二叉树 * @author Administrator */ public void showTree(Node node){ if(node.left!=null){ showTree(node.left); } System.out.println(node.data+" "); if(node.right!=null){ showTree(node.right); } } /** * 构建二序查找树 * @author Administrator * */ public static void createTree(){ tree.add(15); tree.add(12); tree.add(9); tree.add(14); tree.add(13); tree.add(19); tree.add(18); tree.add(22); tree.add(23); } class Node { int data;// 当前节点关键字 Node left;// 当前节点左节点 Node right;// 当前节点右节点 public Node(int data, Node left, Node right) { this.data = data; this.left = left; this.right = right; } } }
上一篇: 《转》为什么要抛弃maven
下一篇: 《转》mysql存储过程语法及实例