1. 程式人生 > >二叉樹中和為某個值得路徑

二叉樹中和為某個值得路徑

定義 pop esc cto OS IT AC root 二叉

題目描述

輸入一顆二叉樹和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。 實現:
class Solution {
        vector<int> in ;
        vector<vector<int>> out ;
public:
    vector<vector<int> > FindPath(TreeNode* root,int expectNumber) {
        if(!root)
            return
out; in.push_back(root->val); if(root->left == 0 && root->right == 0 && root->val == expectNumber) { out.push_back(in); } if(root->left) { FindPath(root->left,expectNumber - root->val);
if(!in.empty()) in.pop_back(); } if(root->right) { FindPath(root->right,expectNumber - root->val); if(!in.empty()) in.pop_back(); } return out; } };

樣例做法:

class Solution {
        vector
<int> in ; vector<vector<int>> out ; public: vector<vector<int> > FindPath(TreeNode* root,int expectNumber) { if(!root) return out; in.push_back(root->val); if(root->left == 0 && root->right == 0 && root->val == expectNumber) { out.push_back(in); } if(root->left) { FindPath(root->left,expectNumber - root->val); } if(root->right) { FindPath(root->right,expectNumber - root->val); } if(!in.empty()) in.pop_back(); return out; } };

本來還以為樣例不對,

    3

  5    8

2  6  7  9

本來認為5為根時遍歷完左右沒有彈出5,後來終於想通,忘記了以5為根時後面還會走if彈出。

二叉樹中和為某個值得路徑