【剑指offer-Java版】23从上往下打印二叉树

来源:互联网 发布:淘宝卖家怎么添加商品 编辑:程序博客网 时间:2024/06/05 18:30

从上往下打印二叉树:如果把这个书看做是一个特殊的图,那么该打印过程就类似于一个广度优先遍历

    public class _Q23 {    public <T> void PrintTreeFromTopToButtom(BinaryTreeNode<T> root){        if(root == null) return;        Queue<BinaryTreeNode<T>> queue = new LinkedList<>();        queue.add(root);        while(!queue.isEmpty()){            BinaryTreeNode<T> node = queue.remove();            if(node.leftChild != null) queue.add(node.leftChild);            if(node.rightChild != null) queue.add(node.rightChild);            System.out.print(node.value + " ");        }        System.out.println();    }    }

测试代码:

    public class _Q23Test extends TestCase {    _Q23 tree = new _Q23();    public void test(){        BinaryTreeNode<Integer> root = new BinaryTreeNode<>();        BinaryTreeNode<Integer> node1 = new BinaryTreeNode<>();        BinaryTreeNode<Integer> node2 = new BinaryTreeNode<>();        BinaryTreeNode<Integer> node3 = new BinaryTreeNode<>();        BinaryTreeNode<Integer> node4 = new BinaryTreeNode<>();        BinaryTreeNode<Integer> node5 = new BinaryTreeNode<>();        BinaryTreeNode<Integer> node6 = new BinaryTreeNode<>();        root.value = 8;        node1.value = 6;        node2.value = 10;        node3.value = 5;        node4.value = 7;        node5.value = 9;        node6.value = 11;        root.leftChild = node1;        root.rightChild = node2;        node1.leftChild = node3;        node1.rightChild = node4;        node2.leftChild = node5;        node2.rightChild = node6;        node3.leftChild = null; node3.rightChild = null;        node4.leftChild = null; node4.rightChild = null;        node5.leftChild = null; node5.rightChild = null;        node6.leftChild = null; node6.rightChild = null;        tree.PrintTreeFromTopToButtom(root);        tree.PrintTreeFromTopToButtom(null);        tree.PrintTreeFromTopToButtom(node1);    }    }
1 0
原创粉丝点击