Remove Subtree if Sum Zero
题目:
一棵树,如果subtree的和为0,那么去掉这个树。
解题思路:
这道题就是采用buttom-up的方法来做。
代码:
一棵树,如果subtree的和为0,那么去掉这个树。
解题思路:
这道题就是采用buttom-up的方法来做。
代码:
public class RemoveSubtreeifSumZero { public TreeNode remove(TreeNode root){ if(root == null){ return null; } int left = helper(root.left); int right = helper(root.right); if(left == 0){ root.left = null; } if(right == 0){ root.right = null; } if(root.val + left + right == 0){ return null; } return root; } private int helper(TreeNode root){ if(root == null){ return 0; } int left = helper(root.left); int right = helper(root.right); if(left == 0){ root.left = null; } if(right == 0){ root.right = null; } return root.val + left + right; } public static void main(String[] args){ /* * 6 * 3 4 * -1 -2 7 5 * * * */ TreeNode node6 = new TreeNode(6); TreeNode node3 = new TreeNode(3); TreeNode node4 = new TreeNode(4); TreeNode node1 = new TreeNode(-1); TreeNode node2 = new TreeNode(-2); TreeNode node7 = new TreeNode(7); TreeNode node5 = new TreeNode(5); node6.left = node3; node6.right = node4; node3.left = node1; node3.right = node2; node4.left = node7; node4.right = node5; RemoveSubtreeifSumZero removeSubtreeifSumZero = new RemoveSubtreeifSumZero(); TreeNode rst = removeSubtreeifSumZero.remove(node6); rst.print(rst); } }

Comments
Post a Comment