Convert a given tree to its Sum Tree

来源:互联网 发布:隔墙听 淘宝 编辑:程序博客网 时间:2024/06/05 15:02
package tree;class Ressum{int sum;}public class ConvertagiventreetoitsSumTree {/** * Convert a given tree to its Sum TreeGiven a Binary Tree where each node has positive and negative values. Convert this to a tree where each node contains the sum of the left and right sub trees in the original tree. The values of leaf nodes are changed to 0. * @param args */public static int convert(TreeNode root,Ressum res){if(root==null) return 0;if(root.left==null&&root.right==null){res.sum = root.value;root.value = 0;return root.value;}Ressum lefts = new Ressum();Ressum rights = new Ressum();int left = convert(root.left, lefts);int right = convert(root.right, rights);res.sum = root.value;root.value = lefts.sum+rights.sum+left+right;return root.value;}public static void print(TreeNode root){if(root==null) return;System.out.print(root.value+" ");print(root.left);print(root.right);}public static void main(String[] args) {TreeNode root = new TreeNode(10);root.left = new TreeNode(-2);root.right = new TreeNode(6);root.left.left = new TreeNode(8);root.left.right = new TreeNode(-4);root.right.left = new TreeNode(7);root.right.right = new TreeNode(5);print(root);Ressum res = new Ressum();convert(root, res);System.out.println();print(root);}}

0 0