/**
* 假设有一颗二叉树,已知这棵树的节点上不均匀的分布了若干石头,石头数跟这棵二叉树的节点数相同,
* 石头只可以在子节点和父节点之间进行搬运,
* 每次只能搬运一颗石头。请问如何以最少的步骤将石头搬运均匀,使得每个节点上的石头上刚好为1。
*
* 后序遍历
*
*
*/
public class StoneMove {
public int count = 0;
public int postOrder(Node node){
assert(true);
int left = 0;
int right = 0;
if(node.left != null){
left = postOrder(node.left);
}
if(node.right != null){
right = postOrder(node.right);
}
int value = left + right + node.value - 1;
count += abs(value);
return value;
}
public int abs(int a){
return a > 0 ? a : -a;
}
/**
* @param args
*/
public static void main(String[] args) {
}
}