牛客網-二叉樹根節點到葉節點的所有路徑和
阿新 • • 發佈:2021-02-06
技術標籤:深度優先搜尋
題目描述
給定一個僅包含數字\ 0-90−9的二叉樹,每一條從根節點到葉子節點的路徑都可以用一個數字表示。
例如根節點到葉子節點的一條路徑是1\to 2\to 31→2→3,那麼這條路徑就用\ 123123來代替。
找出根節點到葉子節點的所有路徑表示的數字之和
例如:
這顆二叉樹一共有兩條路徑,
根節點到葉子節點的路徑1\to 21→2用數字\ 1212代替
根節點到葉子節點的路徑1\to 31→3用數字\ 1313代替
所以答案為\ 12+13=2512+13=25
示例1
輸入
{1,0}
返回值
10
示例2
輸入
{1,#,9}
返回值
19
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ class Solution { public: vector<int>num; int ans=0; //把v動態陣列轉化為數字 int to_number(vector<int>& v)//加了求址符的執行時間更快 { int sum=0; for(int i=0;i<v.size();i++) sum=sum*10+v[i]; return sum; } int sumNumbers(TreeNode* root) { // write code here if(root==NULL)return 0; //這句不加會超時,也就是報段錯誤,我還沒想明白 num.push_back(root->val); if(root->left==NULL&&root->right==NULL){ ans+=to_number(num); } if(root->left){sumNumbers(root->left);num.pop_back();} if(root->right){sumNumbers(root->right);num.pop_back();} return ans; } };