分别计算二叉树奇数层和偶数层的和-- 一道amazon面试题

博客内容讲述了如何使用层次遍历方法分别计算二叉树奇数层和偶数层的节点和,虽然原始问题是求和的差值,但文章提供了计算各自和的解决方案。采用C++实现,通过两个队列交替存储每层节点,时间复杂度为O(n)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

You are given a function calcDifference which takes in the root pointer of a binary tree as it's input. Complete the function to return the sum of values of nodes at odd height - sum of values of node at even height. Consider the root node is at height 1. The structure is already declared, you can just start initializing nodes:
struct node {
    struct node *left,*right;
    int val;

}

首先,要道歉哈,题目本意是要求计算奇数层总和和偶数层总合的差值,但是我给改成分别计算它们的和了。但是也可以尝试 一下计算它们和的差值,之后会给出答案。

显然这个题目要用层次遍历来解决,如果有先根或者中根什么的,应该不能做到计算奇数和偶数层的和。用了c++中的两个queue,每个一个queue分别记录一层的节点,然后在进行交换,m_queue2起到辅助的作用,要不然普通的层次遍历中只是用一个queue不是能够很好的完成任务。因为是层次遍历,所以时间复杂度应该在O(n)。下面给出代码:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值