package tree;
class Ressum{
int sum;
}
public class ConvertagiventreetoitsSumTree {
/**
* Convert a given tree to its Sum Tree
Given 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);
}
}
Convert a given tree to its Sum Tree
最新推荐文章于 2023-11-10 00:06:53 发布