leetcode1022 從根到葉的二進位制數之和

2021-10-02 07:07:54 字數 1125 閱讀 3529

給出一棵二叉樹,其上每個結點的值都是 0 或 1 。每一條從根到葉的路徑都代表乙個從最高有效位開始的二進位制數。例如,如果路徑為 0 -> 1 -> 1 -> 0 -> 1,那麼它表示二進位制數 01101,也就是 13 。

對樹上的每一片葉子,我們都要找出從根到該葉子的路徑所表示的數字。

以 10^9 + 7 為模,返回這些數字之和。

示例:輸入:[1,0,1,0,1,0,1]

輸出:22

解釋:(100) + (101) + (110) + (111) = 4 + 5 + 6 + 7 = 22

樹中的結點數介於 1 和 1000 之間。

node.val 為 0 或 1 。

在完整的解法中,我加入了建樹的步驟,是用陣列層序建立的方式。關鍵在於找左右子節點與陣列元素序號之間的關係。陣列中我用-1表示插入空節點。

而題目要求的函式不難實現,用遞迴的方式。同時也需要知道二進位制數的計算方式。

treenode.h

#pragma once

#includeusing namespace std;

struct treenode

;typedef struct treenode treenode;

solution.h

#pragma once

#include"treenode.h"

#includeclass solution

;

solution.cpp

#include "solution.h"

int solution::sumroottoleaf(treenode* root)

int solution::sumroottoleaf(treenode* root, int total)

}void solution::insert(treenode* p, vectortemp, int t)

if ((2 * (t + 1) + 1) <= length)

} }}

treenode* solution::createfromarray(vectortemp)

Leetcode 1022從根到葉的二進位制之和

給出一棵二叉樹,其上每個結點的值都是 0 或 1 每一條從根到葉的路徑都代表乙個從最高有效位開始的二進位制數。例如,如果路徑為 0 1 1 0 1,那麼它表示二進位制數 01101,也就是 13 對樹上的每一片葉子,我們都要找出從根到該葉子的路徑所表示的數字。返回這些數字之和。題目資料保證答案是乙個...

1022 從根到葉的二進位制數之和

package com.heu.wsq.leetcode.tree 1022.從根到葉的二進位制數之和 author wsq date 2020 12 22 給出一棵二叉樹,其上每個結點的值都是 0 或 1 每一條從根到葉的路徑都代表乙個從最高有效位開始的二進位制數。例如,如果路徑為 0 1 1 0...

1022 從根到葉的二進位制數之和

給出一棵二叉樹,其上每個結點的值都是0或1。每一條從根到葉的路徑都代表乙個從最高有效位開始的二進位制數。例如,如果路徑為0 1 1 0 1,那麼它表示二進位制數01101,也就是13。對樹上的每一片葉子,我們都要找出從根到該葉子的路徑所表示的數字。返回這些數字之和。題目資料保證答案是乙個32 位整數...