遍历二叉树 找树中最大差程序 java,写一个函数,输入一个二叉树,树中每个节点存放了一个整数值,函数返回这棵二叉树中相差最大的两个节点间的差值绝对值。...

该博客介绍了一种非递归方法来遍历二叉树,寻找最大和最小节点值,从而计算出二叉树中两个节点的最大差值。通过按层遍历(广度优先搜索)实现,时间复杂度为O(n),适用于2015年阿里巴巴秋季招聘的在线笔试题。
摘要由CSDN通过智能技术生成

写一个函数,输入一个二叉树,树中每个节点存放了一个整数值,函数返回这棵二叉树中相差最大的两个节点间的差值绝对值。请注意程序效率

这是2015阿里秋招的一个在线笔试题

实现方法很简单,遍历一遍二叉树,找出最大最小,一相减就可以求出最大的差值

改成

0818b9ca8b590ca3270a3433284dd417.png

其实就是加了一个整数值进去

之前写了很多的遍历方法

之前在做题的时候居然写递归的方法求值,后面测试了一下,果然结果不对

只要是非递归的的方法遍历都可以很容易找出最大值最小值,效率也比较高,时间复杂度为O(n)

/**

* 按层遍历二叉树

* 2014-5-4

*

* @author:5354xyz

*/

public void levelTraverse(BinaryTree bTree)

{

int max = bTree.intvalue;

int min = bTree.intvalue;

if(bTree == null )

return;

Queue queue = new LinkedList();

queue.offer(bTree);

while(!queue.isEmpty())

{

BinaryTree pNode = queue.poll();

if (pNode.intvalue > max )

max = pNode.intvalue;

if (pNode.intvalue < min)

min = pNode.intvalue;

onVisitListener.visit(pNode); // 访问节点

if(pNode.leftchild != null)

queue.offer(pNode.leftchild);

if(pNode.rightchild != null)

queue.offer(pNode.rightchild);

}

System.out.println("最大差值为:"+max +" - "+min+" = "+(max - min));

return;

}

输出结果:

0818b9ca8b590ca3270a3433284dd417.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值