二叉树中和为某一路径的值(DFS)

112 Path Sum
给定一棵二叉树和一个和,确定树是否有根到叶的路径,以便沿路径加起来的所有值等于给定的总和。
https://leetcode.com/problems/path-sum/description/

bool hasPathSum(TreeNode* root, int sum) {
        if(root == nullptr)
            return false;
        if(root->val == sum && root->left == NULL && root->right == NULL)
            return true;
        return hasPathSum(root->left, sum - root->val) || hasPathSum(root->right, sum - root->val);            
    }

二叉树中和为值得路径

输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
https://www.nowcoder.com/practice/b736e784e3e34731af99065031301bca?tpId=13&tqId=11177&tPage=2&rp=2&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

void DFS(TreeNode *root, int sum, vector<int> &path, vector<vector<int>> &paths) {
    //叶节点的左子树、右子树为nullptr,返回上一层
    if (root == nullptr)
        return;
    path.push_back(root->val);
    if (root->left == nullptr && root->right == nullptr && root->val == sum)
        paths.push_back(path);
    DFS(root->left, sum - root->val, path, paths);
    //叶节点的右子树为nullptr,直接return; 
    DFS(root->right, sum - root->val, path, paths);
    //返回上一层之前删除该层节点的值
    path.pop_back();
}

vector<vector<int> > FindPath(TreeNode* root, int expectNumber) {
    vector<vector<int>> paths;
    vector<int> path;
    DFS(root, expectNumber, path, paths);
    return paths;
}

  void DFS(TreeNode *root, int sum, vector<int> path, vector<vector<int>> &paths){
        if(root == nullptr)
            return;
        path.push_back(root->val);
        if(root->left == nullptr && root->right == nullptr && root->val == sum)
            paths.push_back(path);
        DFS(root->left, sum - root->val, path, paths);
        DFS(root->right, sum - root->val, path, paths);        
    }
 vector<vector<int> > FindPath(TreeNode* root,int expectNumber) {  
        vector<vector<int>> paths;
        vector<int> path;        
        DFS(root, expectNumber, path, paths);
        return paths;  
        }

同:
https://leetcode.com/problems/binary-tree-paths/description/

你可能感兴趣的:(数据结构与算法,DFS)