二叉查找树的实现(插入+递归调用)
来源:互联网 发布:黑魂三捏脸数据 编辑:程序博客网 时间: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
- 二叉查找树的实现(插入+递归调用)
- 查找二叉树的实现(查找,删除,插入)分别用递归和非递归
- 二叉搜索树的实现(查找,插入,删除的递归与非递归)
- 二叉搜索树的基本功能的实现(递归及非递归直线插入,删除,查找)
- 二叉搜索树(BST)递归与非递归的插入、删除、查找的实现
- 非递归实现二叉查找树插入操作
- 【c++】二叉搜索树的插入、查找、非递归删除
- 二叉树的链式实现(插入,查找,遍历,删除)
- 递归实现二叉查找树
- 二叉查找树带父节点指针的创建,销毁,查找,删除,插入,找前驱后继,找最小值最大值(递归和非递归的实现)
- 二叉查找树--查找、删除、插入(Java实现)
- (Java实现)二叉查找树--查找、删除、插入
- (Java实现)二叉查找树--查找、删除、插入
- 二叉查找树--查找、删除、插入(Java实现)
- 二叉查找树--查找、删除、插入(Java实现)
- 二叉查找树--查找、删除、插入(Java实现)
- 二叉查找树的查找、插入、删除、释放等基本操作的实现(C语言)
- 二叉树的递归插入
- LoadRunner录制脚本不弹出IE浏览器
- hibernate的学习
- 数组分割
- 《深入理解linux内核》读书笔记 -- 第二章 内存寻址
- 微信公众号预约第三方平台
- 二叉查找树的实现(插入+递归调用)
- 手把手教你实现Android AIDL跨进程通信
- 2016年蓝桥杯第七届javaB组真题及答案
- awk工具小案例
- DrawableCompat使用:一张图片实现selector效果
- 用框架(frameset和frame)一个网站同时打开多个窗口
- c++构造函数和析构函数详解
- 密码发生器
- 蒟蒻的分块入门