直接上代码
/**
* 按层遍历二叉树,返回这棵二叉树中相差最大的两个节点间的差值绝对值(默认至少有两个节点)
* @param root
* @return
*/
public static int getMaxValue(TreeNode root) {
Queue<TreeNode> queue = new LinkedList<TreeNode>();// 队列
TreeNode temp;
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
queue.add(root);// 添加根节点到队列
while (!queue.isEmpty()) {
temp = queue.poll();
if(temp.val > max){
max = temp.val;
}
if(temp.val < min){
min = temp.val;
}
if (temp.left != null) {
// 如果左孩子不为空,将其添加到队尾
queue.offer(temp.left);
}
if (temp.right != null) {
// 如果右孩子不为空,将其添加到队尾
queue.offer(temp.right);
}
}
return max - min;
}