【LeetCode】奇偶树 Java 题解
题目描述
如果一棵二叉树满足下述几个条件,则可以称为 奇偶树 :
二叉树根节点所在层下标为 0 ,根的子节点所在层下标为 1 ,根的孙节点所在层下标为 2 ,依此类推。偶数下标 层上的所有节点的值都是 奇 整数,从左到右按顺序 严格递增奇数下标 层上的所有节点的值都是 偶 整数,从左到右按顺序 严格递减给你二叉树的根节点,如果二叉树为 奇偶树 ,则返回 true ,否则返回 false 。
复制代码
思路分析
今天的算法每日一题是二叉树的相关题目,需要判断是否是奇偶树。题目给出偶数下标 层上的所有节点的值都是 奇 整数,从左到右按顺序 严格递增奇数下标 层上的所有节点的值都是 偶 整数,从左到右按顺序 严格递减。
根据题目描述,我们需要分层判断,所以比较适合的方法是 BFS。BFS 是广度优先搜索,在 Java 中一般使用 queue 实现,每次只处理当前层,当前层满足条件之后,在处理下一层。
在我实际提交过程中,需要注意的是要看清奇偶数层的定义,不要写反了。具体代码实现如下。
通过代码
复制代码
总结
上述算法的时间复杂度是 O(n),空间复杂度是 O(n)
坚持算法每日一题,加油!
版权声明: 本文为 InfoQ 作者【HQ数字卡】的原创文章。
原文链接:【http://xie.infoq.cn/article/81a501823955cdbce40002f2a】。文章转载请联系作者。
评论