问题描述:给出一颗二进制数,书上每个节点都是0或者1,每一条从根到叶的路径都代表一个从最高有效位开始的二进制数。例如,如果路近0->1->1->0->1那么它代表耳机智能化数01101,也就是13,在树上的每一片叶子,我们都要找出从根到该叶子节点的数字,返回数字之和。
求解思路:每遍历到一个节点,其值等于父节点的值*2+当前节点的值,使用dfs进行求解。
int res=0;
public void?dfs(TreeNode root,int parentSum)
{
if(root==null){return;}
if(root.left==null&&root.right==null){res+=parentSum;return;}
dfs(root.left,parentSum*2+root.val);
dfs(root.right,parentSum*2+root.val);
}
public int DFS(TreeNode root)
{
dfs(root,0);
}