검지offer-24.두 갈래 트리 중 하나가 되는 경로

1371 단어 검지offer
제목: 두 갈래 트리와 정수를 입력하고 두 갈래 트리의 결점 값과 정수를 입력하기 위한 모든 경로를 출력합니다.경로는 나무의 뿌리 결점에서 시작하여 잎 결점까지 내려가는 결점으로 경로를 형성합니다.
사고방식: 노드 값이 주어진 값과 같은지 판단하고 이 경로를 회수한다. 만약 같지 않으면 왼쪽 트리와 오른쪽 트리를 귀속시킨다. 주의해야 한다. 왼쪽 트리와 오른쪽 트리를 귀속할 때 두 번째 파라미터는 반드시 주어진 값으로 이전 값을 빼야 한다.(PathFind(tree->left,sum - tree->val);)예를 들어 왼쪽 트리를 귀속시키고 두 번째 매개 변수는sum-tree->val이다.비귀속 방법은 아직 생각해 내지 못했으니, 생각해 내고, 사고방식이 명확해지면 다시 보충해야 한다
/*
struct TreeNode {
	int val;
	struct TreeNode *left;
	struct TreeNode *right;
	TreeNode(int x) :
			val(x), left(NULL), right(NULL) {
	}
};*/
class Solution {
    vector >res;
    vectortemp;
    void PathFind(TreeNode* tree,int sum)
    {
        temp.push_back(tree->val);
        if (tree->val == sum && !tree->left && !tree->right)// 
        {
            res.push_back(temp);
        }
        else
        {
            if (tree->left)
            {
                PathFind(tree->left,sum - tree->val);
            }
            if (tree->right)
            {
                PathFind(tree->right,sum - tree->val);
            }
        }
        temp.pop_back();// , 
        
    }
public:
    vector > FindPath(TreeNode* root,int expectNumber) 
    {
        if(root)
            PathFind(root,expectNumber);
        return res;
    }
};

좋은 웹페이지 즐겨찾기