[검지offer-Java 버전] 23 위에서 아래로 두 갈래 나무를 인쇄합니다.

3827 단어
위에서 아래로 두 갈래 나무를 인쇄합니다. 만약 이 책을 특수한 그림으로 간주한다면, 이 인쇄 과정은 넓이를 우선적으로 훑어보는 것과 유사합니다.

    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);
    }
    }

좋은 웹페이지 즐겨찾기