这道题也是非常有难度的题
它体现了有限制条件的树的深度遍历
假设有一个这样的树:
我们要寻找的目标和是6
在find函数内
我们在temp中先存入root.val 2
在 if(root.left != null){
find(root.left,num-root.val);
}中,我们发现左子树并不符合条件
则pop左子树的值,转而走向右子树
右子树符合我们要找的值
则result.push(temp.slice());//把一个列表加到另一个列表中作为另一个列表的元素
/* function TreeNode(x) {
this.val = x;
this.left = null;
this.right = null;
} */
var temp;
var result;
function FindPath(root, expectNumber)
{
// write code here
temp = [];
result = [];
if(root == null){
return [];
}
find(root,expectNumber);
return result;
}
function find(root,num){
temp.push(root.val);
if(root.val == num && root.left == null && root.right == null){
result.push(temp.slice());//把一个列表加到另一个列表中作为另一个列表的元素
}else{
if(root.left != null){
find(root.left,num-root.val);
}
if(root.right != null){
find(root.right,num-root.val);
}
}
temp.pop();
}