zoukankan      html  css  js  c++  java
  • [javaSE] 数据结构(二叉树-遍历与查找)

    前序遍历:中,左,右

    中序遍历:左,中,右

    后序遍历:左,右,中

    二叉树查找

    从根节点进行比较,目标比根节点小,指针移动到左边

    从根节点进行比较,目标比根节点大,指针移动到右边

        /**
         * 前序遍历
         * @param tree
         */
        public void preOrder(BSTree tree){
            preOrder(tree.mRoot);
        }
        public void preOrder(BSTNode node){
            if(node!=null){
                System.out.print(node.key+"");
                preOrder(node.left);
                preOrder(node.right);
            }
        }
        /**
         * 中序遍历
         * @param tree
         */
        public void midOrder(BSTree tree){
            midOrder(tree.mRoot);
        }
        public void midOrder(BSTNode node){
            if(node!=null){
                midOrder(node.left);
                System.out.print(node.key+"");
                midOrder(node.right);
            }
        }
        /**
         * 后序遍历
         * @param tree
         */
        public void postOrder(BSTree tree){
            postOrder(tree.mRoot);
        }
        public void postOrder(BSTNode node){
            if(node!=null){
                postOrder(node.left);
                postOrder(node.right);
                System.out.print(node.key+"");
            }
        }
        /**
         * 二叉树的查找
         * @param tree
         * @param key
         * @return
         */
        public BSTNode<T> search(BSTree<T> tree,T key){
            BSTNode<T> mRoot=tree.mRoot;
            while(mRoot!=null){
                int flag=key.compareTo(mRoot.key);
                if(flag<0){
                    mRoot=mRoot.left;
                }else if(flag>0){
                    mRoot=mRoot.right;
                }else{
                    return mRoot;
                }
            }
            return mRoot;
        }

            tree.preOrder(tree);//输出 312546
            tree.midOrder(tree);//输出 123456
            tree.postOrder(tree);//输出 214653
            BSTree.BSTNode node=tree.search(tree, 5);
            System.out.println(node.left.key);//输出 4
  • 相关阅读:
    alg--动态规划(dynamic planning)
    alg--分治法
    汇编-理解call,ret
    汇编--实验7
    leetCode笔记--binary tree
    leetCode笔记--(1)
    C#获取当前路径的方法如下
    VS2013 快捷键 与 RESHARPER 冲突
    使用Visual Studio 2013进行单元测试--初级篇
    VS 插件
  • 原文地址:https://www.cnblogs.com/taoshihan/p/5595103.html
Copyright © 2011-2022 走看看