求二叉树中和为特定值的路径

来源:互联网 发布:mysql数据库热迁移 编辑:程序博客网 时间:2024/06/03 09:25

    求一棵二叉树中和为特定值的路径,可以用深搜的思路来解决,由于二叉树中各个节点的值没有特定的大小规律,所以没有可行的剪枝策略。具体的代码如下所示:

vector<TreeNode *> certainVal(TreeNode *root, int val, vector<TreeNode *> curNode, int curval){//若找到路径则返回if(val == curval){return curNode;}//该路径已经搜索到叶子节点,且没有所找的路径vector<TreeNode *> errResult;if(root == nullptr){return errResult;}//将root 节点加入到搜索路径中继续查找curval += root -> val;curNode.push_back(root);vector<TreeNode *> result = certainVal(root -> left, val, curNode, curval); //搜索左子树if(result.size() != 0){return result;}vector<TreeNode *> result = certainVal(root -> left, val, curNode, curval); //搜索右子树if(result.size() != 0){return result;}//以根节点的左右子树为起始路径继续搜索vector<TreeNode *> newStart;result = certainVal(root -> left, val, newStart, 0); //搜索左子树if(result.size() != 0){return result;}result = certainVal(root -> right, val, newStart, 0); //搜索右子树if(result.size() != 0){return result;}return errResult;  //在经过root节点的分支中没有找到,返回}





0 0
原创粉丝点击