二叉查找树的实现(插入+递归调用)

来源:互联网 发布:黑魂三捏脸数据 编辑:程序博客网 时间:2024/06/09 21:07
package BinaryTree;public class BinarySearchTree {public TreeNode root;public BinarySearchTree(){//root=new TreeNode(1,"A");//root=null;} private class TreeNode{private int key;private String data;private TreeNode leftChild;private TreeNode rightChild;public TreeNode(int key,String data){this.key=key;this.data=data;this.leftChild=null;this.rightChild=null;}}public TreeNode getTreeNode(int key,String data){return new TreeNode(key,data);}private void insert(TreeNode node){root=insert(root,node);}public TreeNode insert(TreeNode subTree,TreeNode node){if(node==null){  //不可插入nullreturn null;}if(subTree==null){  //根节点为空,插入subTree=node;}else{if(node.key<subTree.key){//比根节点小? 插左边subTree.leftChild=insert(subTree.leftChild,node);}else{ //否则,插右边subTree.rightChild=insert(subTree.rightChild,node);}}return subTree;}/** * 前序遍历 *  先访问根节点,再分别访问其左、右子树 * @param subTree */public void preOrder(){preOrder(root);}private void preOrder(TreeNode subTree){if(subTree!=null){System.out.println("key:"+subTree.key+"--name:"+subTree.data);preOrder(subTree.leftChild);preOrder(subTree.rightChild);}}/** * 中序遍历 *  根节点的遍历在其左、右子树之间 * @param subTree */public void inOrder(){inOrder(root);}public void inOrder(TreeNode subTree){if(subTree!=null){inOrder(subTree.leftChild);System.out.println("key:"+subTree.key+"--name:"+subTree.data);inOrder(subTree.rightChild);}}/** * 后序遍历 * 访问根节点在遍历其左右子树之后 * @param subTree */public void postOrder(){postOrder(root);}public void postOrder(TreeNode subTree){if(subTree!=null){postOrder(subTree.leftChild);postOrder(subTree.rightChild);System.out.println("key:"+subTree.key+"--name:"+subTree.data);}}public static void main(String[] args) {BinarySearchTree bst=new BinarySearchTree();bst.insert(bst.getTreeNode(4, "D"));bst.insert(bst.getTreeNode(1, "A"));bst.insert(bst.getTreeNode(2, "B"));bst.insert(bst.getTreeNode(5, "E"));bst.insert(bst.getTreeNode(3, "C"));sop("前序遍历");bst.preOrder();sop("中序遍历:结果为从小到大");bst.inOrder();sop("后序遍历");bst.postOrder();}public static void sop(Object o){System.out.println(o);}}

0 0
原创粉丝点击