package LeetCode.OneThousandMore;
import LeetCode.TreeNode;
public class OneThousandAndTwentyTwo {
// 算的是总和,我们可以在每层直接把二进制的权位直接与数值相乘算出十进制的数,然后进行相加
private int sum = 0;
public int sumRootToLeaf(TreeNode root) {
if (root == null) return 0;
helper(root,0);
return sum;
}
private void helper(TreeNode treeNode,int num){
if (treeNode == null)return;
num += treeNode.val;
// 如果是叶子的话直接相加就行,因为 2 的零次方是 1
if (treeNode.right == null && treeNode.left == null)
sum += num;
// 二进制转十进制就是乘以权位进行相加
// 递归函数每次进行递归就相当于直接进行了进制转换
helper(treeNode.left, num * 2);
helper(treeNode.right,num * 2);
}
}
1022. 从根到叶的二进制数之和(逐句解释代码)
最新推荐文章于 2022-05-30 08:18:37 发布