검지 Offer - 두 갈래 트리 중 하나에 해당하는 경로(24)

2577 단어 검지Offer시리즈

두 갈래 트리 중 하나가 되는 경로 (24)


제목 설명
두 갈래 나무의 노드와 정수를 입력하고 두 갈래 나무의 결점 값과 정수를 입력하는 모든 경로를 출력합니다.경로는 나무의 뿌리 결점에서 시작하여 잎 결점까지 내려가는 결점으로 경로를 형성합니다.(주의: 값을 되돌려주는list에서 그룹 길이가 큰 그룹이 앞에 있습니다)

코드(소 손님 AC에 이미 있음)


DFS. 주로 끝까지 돌아갈 때 어떤 노드의 좌우 나무가 동시에 비어 있고 희망한다는 것을 주의해야 한다root->val 딱 같다expectNumber .
class Solution {
public:
    vector<vector<int> > FindPath(TreeNode* root,int expectNumber) {
        if (!root) return {};
        vector<vector<int>> res;
        vector<int> cur;
        dfs(root, cur, res, expectNumber);
        return res;
    }
private:
    void dfs(TreeNode *root, vector<int> &cur, vector<vector<int>> &res, int target) {
        if (!root) return;
        cur.push_back(root->val);
        // res.push_back(cur);   return,  
        //   root->left   root->right  ,   dfs   return,
        //   cur.pop_back(),  .
        if (!root->right && !root->left && root->val == target)
            res.push_back(cur); 

        dfs(root->left, cur, res, target - root->val);
        dfs(root->right, cur, res, target - root->val);
        cur.pop_back();
    }
};

좋은 웹페이지 즐겨찾기