zoukankan      html  css  js  c++  java
  • 二叉树的遍历

    二叉树的前序,中序,后序,层次遍历

    /** binary tree traversal methods */
    
    package dataStructures;
    
    public class BinaryTreeTraversal {
        /** visit method that prints the element in the node */
        public static void visit(BinaryTreeNode t) {
            System.out.print(t.element + " ");
        }
    
        /** preorder traversal */
        public static void preOrder(BinaryTreeNode t) {
            if (t != null) {
                visit(t); // visit tree root
                preOrder(t.leftChild); // do left subtree
                preOrder(t.rightChild); // do right subtree
            }
        }
    
        /** inorder traversal */
        public static void inOrder(BinaryTreeNode t) {
            if (t != null) {
                inOrder(t.leftChild); // do left subtree
                visit(t); // visit tree root
                inOrder(t.rightChild); // do right subtree
            }
        }
    
        /** postorder traversal */
        public static void postOrder(BinaryTreeNode t) {
            if (t != null) {
                postOrder(t.leftChild); // do left subtree
                postOrder(t.rightChild); // do right subtree
                visit(t); // visit tree root
            }
        }
    
        /** level order traversal 
         *  借助队列实现层次遍历
         * */
        public static void levelOrder(BinaryTreeNode t) {
            ArrayQueue q = new ArrayQueue();
            while (t != null) {
                visit(t); // visit t
    
                // put t's children on queue
                if (t.leftChild != null)
                    q.put(t.leftChild);
                if (t.rightChild != null)
                    q.put(t.rightChild);
    
                // get next node to visit
                t = (BinaryTreeNode) q.remove();
            }
        }
    
        /** test program */
        public static void main(String[] args) {
            BinaryTreeNode y = new BinaryTreeNode(new Integer(2));
            BinaryTreeNode z = new BinaryTreeNode(new Integer(3));
            BinaryTreeNode x = new BinaryTreeNode(new Integer(1), y, z);
            BinaryTreeNode m = new BinaryTreeNode(new Integer(5));
            BinaryTreeNode n = new BinaryTreeNode(new Integer(0), x, m);
    
            System.out.println("The elements in preorder are");
            preOrder(n);
            System.out.println();
    
            System.out.println("The elements in inorder are");
            inOrder(n);
            System.out.println();
    
            System.out.println("The elements in postorder are");
            postOrder(n);
            System.out.println();
    
            System.out.println("The elements in level order are");
            levelOrder(n);
        }
    }
  • 相关阅读:
    Query Designer:变量的偏移 Variable Offset
    Query Designer:变量注意事项
    Query Designer:Variable 变量
    Query Designer:Hierarchy层级显示
    Query Designer:公式冲突
    Analyzer中进行货币转换
    Analyzer报表里显示的 * 星号、红叉、#井号的意义
    增量测试
    BW系统之间的InfoProvider数据传输:Export DataSource
    DSO的记录模式Record Mode字段测试
  • 原文地址:https://www.cnblogs.com/yuwenfeng/p/4225506.html
Copyright © 2011-2022 走看看