Binary Boundary Print

题目地址:
http://www.geeksforgeeks.org/boundary-traversal-of-binary-tree/

题目:
Given a binary tree, print boundary nodes of the binary tree Anti-Clockwise starting from the root. For example, boundary traversal of the following tree is “20 8 4 10 14 25 22”。

解题思路:
这道题就是用dfs来做,需要的是先打左边的节点,然后是叶子节点,最后是右边的节点。


代码:

public class BinaryBoundaryPrint {

    public static void main(String[] args){
        TreeNode node1 = new TreeNode(1);
        TreeNode node2 = new TreeNode(2);
        TreeNode node3 = new TreeNode(3);
        TreeNode node4 = new TreeNode(4);
        TreeNode node5 = new TreeNode(5);
        TreeNode node6 = new TreeNode(6);
        TreeNode node7 = new TreeNode(7);
        TreeNode node8 = new TreeNode(8);
        TreeNode node9 = new TreeNode(9);
        node5.left = node6;
        node5.right = node7;
        node3.left = node8;
        node3.right = node9;
        node2.left = node4;
        node2.right = node5;
        node1.left = node2;
        node1.right = node3;
        BinaryBoundaryPrint print = new BinaryBoundaryPrint();
        print.printBoundary(node1);

    }

    public void printBoundary(TreeNode root){
        printLeftBoundary(root);
        printLeaves(root);
        printRightBoundary(root);
    }

    private void printLeftBoundary(TreeNode node){
        if (node != null) {
            if (node.left != null) {
                System.out.print(node.val + " ");
                printLeftBoundary(node.left);
            }
            else if (node.right != null) {
                System.out.print(node.val + " ");
                printLeftBoundary(node.right);
            }
        }
    }

    private void printLeaves(TreeNode node){
        if (node != null) {
            printLeaves(node.left);
            if (node.left == null && node.right == null){
                System.out.print(node.val + " ");
            }
            printLeaves(node.right);
        }
    }

    private void printRightBoundary(TreeNode node){
        if (node != null) {
            if (node.right != null) {
                printRightBoundary(node.right);
                System.out.print(node.val + " ");
            }
            else if (node.left != null) {
                printRightBoundary(node.left);
                System.out.print(node.val + " ");
            }
        }
    }

}

Comments

Popular Posts