Loading

如何逆向逐层输出树中的元素

如下所示的二叉树:
这里写图片描述
输出:13 5 9 10 7 4 8 12 6 3 11 2 1

public static<T> void levelOrderTraversalInReverse(BinaryTreeNode<T> root){ // 逆向逐层输出元素
        if(root == null)
            return;
        DynArrayQueue<BinaryTreeNode<T>> queue = new DynArrayQueue<>();
        DynArrayStack<BinaryTreeNode<T>> stack = new DynArrayStack<>();
        queue.enQueue(root);
        while(!queue.isEmpty()){
            root = queue.deQueue();
            if(root.getRight() != null)
                queue.enQueue(root.getRight());
            if(root.getLeft() != null)
                queue.enQueue(root.getLeft());
            stack.push(root);
        }
        while(!stack.isEmpty())
            System.out.print(stack.pop().getData() + " ");
    }

完整代码可以访问我的GitHub:https://github.com/StriverLi/Data-Structures-and-Algorithms-in-Java/blob/master/src/tree/BinaryTreeNode.java

posted @ 2017-04-11 09:13  leon_x  阅读(36)  评论(0)    收藏  举报