Path Question In Tree
题目描述1:
给定一棵树的头结点和一个目标值;判断是否树中存在一条从根到叶的路径,其路径上节点和的值为目标值。
例子:
这题是leetcode上的题目,可以看这上面的题目描述.
解题思路:
主要的思路还是递归来解决这道题目。我们在不断的遍历树的过程中,对sum值进行改变,即减去当前遍历节点上的值;如果遇到了当前是叶节点,并且其值和当前的目标值相同,就直接返回true.
代码如下:
|
|
题目描述2:
给定一棵树的头结点和一个目标值;找到树中所有从根到叶节点和为目标值的情况并返回。
例子:
leetcode上的题目描述
解题思路:
本题的思路在与使用回溯的方法;但是需要注意的点是什么时候回溯。我们用一个vector保存当前路径的节点;用一个vector保存每次符合条件后保存路径。
代码如下:
|
|
题目描述3:
给定一棵树的头节点和一个目标值,要求返回树中任意从父节点到子节点路径和为目标值的个数。
例子:
这题也是leetcode上的题目,详情可见此处.
解题思路:
当然这题的思路依旧是递归的方式;但是有不同的是,我们需要判断在遍历到当前节点的时候,其遍历的路径上的子路径是否存在符合条件的情况。所以我们主要是用一个vector保存了遍历到当前节点的路径上的累加和;这样我们就可以通过遍历累加和数组来判断当前路径上是否存在符合要求的路径。
代码如下:
|
|
题目描述4:
给定一棵树的头结点,从树的头结点到根节点的每一条路径都代表了一个数,要求返回所有路径代表的数的和。
这道题的具体描述可以看LeetCode129.
解题思路:
主要解题思路也是很直接,我们不断的往树的深度遍历,主要用一个变量来记录每条路径上所代表的数,用一个变量记录所有路径的总和即可。
代码如下:
|
|
题目描述5:
给定一棵树的头结点,要求返回树中的每一条路径表示,例如1->2->3等。
依旧是LeetCode的题目LeetCode257。具体描述可以看这里。解题思路不再赘述。
代码如下:
|
|
题目描述6:
给定一棵树的头结点,要求返回树的每条路径上各自的最大值。
具体题目描述可以看LeetCode515.
这边代码的解法使用的是按层遍历的方式,找到每一条路径上的数然后保存排序找到最大值;当然也可以直接遍历。
代码如下:
|
|