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
  • 相关阅读:
    csrf(跨站请求伪造)
    CBV加装饰器
    Django的中间件
    form组件简介
    统计日期天数及拓展使用
    回文数的定义以及拓展使用
    排序——冒泡,快速,选择,插入
    No resources found. Error from server (NotAcceptable): unknown (get pods)
    编程题训练5
    K8s集群内热改代码
  • 原文地址:https://www.cnblogs.com/taoshihan/p/5595103.html
Copyright © 2011-2022 走看看