Binary Boundary Print
题目地址:
http://www.geeksforgeeks.org/boundary-traversal-of-binary-tree/
题目:
解题思路:
这道题就是用dfs来做,需要的是先打左边的节点,然后是叶子节点,最后是右边的节点。

代码:
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
Post a Comment