【发布时间】:2015-01-21 20:41:10
【问题描述】:
如果左侧奇数后代的数量 == 右侧奇数后代的数量,则树为“奇平衡”。
public boolean isOddBalanced() {
return (isOddBalanced (root) >= 0);
}
private int isOddBalanced (Node x) {
if (x == null) return 0;
int ls = isOddBalanced (x.left);
int rs = isOddBalanced (x.right);
if (Math.abs (ls - rs) > 0) return -1;
else return 0;
}
我不知道如何计算和比较每边奇数键的数量。任何见解将不胜感激。
尝试实现@nem 的想法:
public boolean isOddBalanced() {
return (isOddBalanced (root, '0') >= 0);
}
private int isOddBalanced (Node x, char side) {
int count = 0;
if (x == null) return 0;
count = isOddBalanced (x.left, 'l');
count = isOddBalanced (x.right, 'r');
if (x.key % 2 != 0 && side == 'l') count += 1;
if (x.key % 2 != 0 && side == 'r') count -= 1;
if (count != 0) return -1;
else return 0;
}
【问题讨论】:
-
奇数后代的数量是指持有奇数值的子节点数吗?
标签: java recursion binary-search-tree