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);
        }
    }
  • 相关阅读:
    数组
    循环(二)
    循环——笔记
    C#基础(四)
    C#基础(三)
    安卓帮助文档
    增加线程异步发送消息的方法二(Runnable)
    增加线程异步发送消息的方法一(Thread)
    获取下拉框的值
    获取表中字段最大值,并且保存在前台页面中
  • 原文地址:https://www.cnblogs.com/yuwenfeng/p/4225506.html
Copyright © 2011-2022 走看看