我正在写一种方法来解决关于二叉树的作业问题。
目标:
给定一个二叉树,检查该树是否满足对于每个节点而言,其左右子节点的值之和等于该节点的值。如果一个节点只有一个子节点,则该节点的值应与该子节点的值相同。叶子节点自动满足这个属性。
我遇到了一个错误,即我的代码在某些情况下是不正确的。例如,如果我有一棵树:
15
/ \
5 10
当我的代码返回false时,它实际上应该是true。
这是我迄今为止的方法,我做错了什么?
目标:
给定一个二叉树,检查该树是否满足对于每个节点而言,其左右子节点的值之和等于该节点的值。如果一个节点只有一个子节点,则该节点的值应与该子节点的值相同。叶子节点自动满足这个属性。
我遇到了一个错误,即我的代码在某些情况下是不正确的。例如,如果我有一棵树:
15
/ \
5 10
当我的代码返回false时,它实际上应该是true。
这是我迄今为止的方法,我做错了什么?
boolean BTchecksum(BinNode root) {
if (root == null || root.left() == null && root.right() == null) {return true;}
BinNode leftNode = root.left();
BinNode rightNode = root.right();
int sum = (int)(leftNode.element()) + (int)(leftNode.element());
int value = (int)(root.element());
return (sum == value) && BTchecksum(root.left()) && BTchecksum(root.right());
}