📅  最后修改于: 2023-12-03 14:54:27.698000             🧑  作者: Mango
在二进制搜索树中打印所有偶数节点的值,需要遍历整个树,并判断每个节点的值是否是偶数。以下是一种实现该功能的算法:
void printEvenNodes(TreeNode root) {
if (root != null) {
if (root.val % 2 == 0) {
System.out.println(root.val);
}
printEvenNodes(root.left);
printEvenNodes(root.right);
}
}
这个算法采用了递归方式遍历整个树。对于每个节点,如果节点的值是偶数,则打印该节点的值。然后继续遍历左子树和右子树。最终可以得到所有偶数节点的值。
如果只是需要将所有偶数节点的值存储在一个数组中,而不是直接打印出来,可以修改上面的算法,使其返回一个整数数组:
int[] getEvenNodes(TreeNode root) {
List<Integer> list = new ArrayList<>();
getEvenNodes(root, list);
int[] result = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
result[i] = list.get(i);
}
return result;
}
void getEvenNodes(TreeNode root, List<Integer> list) {
if (root != null) {
if (root.val % 2 == 0) {
list.add(root.val);
}
getEvenNodes(root.left, list);
getEvenNodes(root.right, list);
}
}
这个修改后的算法也是采用递归方式遍历整个树,但是将存储偶数节点的值改为了ArrayList列表,最后再转换成整数数组返回。
上面的两个算法都可以解决打印二进制搜索树的所有偶数节点的问题,根据需要选择合适的算法即可。