【LeetCode】从根到叶的二进制数之和 Java 题解
题目描述
给出一棵二叉树,其上每个结点的值都是 0 或 1 。每一条从根到叶的路径都代表一个从最高有效位开始的二进制数。例如,如果路径为 0 -> 1 -> 1 -> 0 -> 1,那么它表示二进制数 01101,也就是 13 。
对树上的每一片叶子,我们都要找出从根到该叶子的路径所表示的数字。
返回这些数字之和。题目数据保证答案是一个 32 位 整数。
复制代码
思路分析
今天的算法每日一题是二叉树路径求和的问题,这个问题的特殊之处是需要转换成二进制求和。
递归的终止条件是当前节点为空,或者当前节点是叶子节点。得到如下代码:
代码
复制代码
总结
上述代码的时间复杂度是 O(n), 空间复杂度是 O(n)
坚持算法每日一题,加油!
版权声明: 本文为 InfoQ 作者【HQ数字卡】的原创文章。
原文链接:【http://xie.infoq.cn/article/638f26291ce9fc8c1851f7bd5】。文章转载请联系作者。
评论