剑指offer-面试题34-二叉树中和为某一值的路径-二叉树遍历


/*
题目:
	输入一颗二叉树和一个整数,打印从根节点到叶子节点中所有和为该整数的路径。
*/
/*
思路:
	先序遍历,深度遍历。
	从树根开始,记录路径之和,遍历到叶子节点,如果和为期望值,则输出。
	回退节点,寻找下一个叶子节点,直到遍历完所有到达叶子节点的路径。
*/
#include<iostream>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stdio.h>
#include<vector>
#include<stack>
#include<queue>

using namespace std;

struct TreeNode {
	int val;
	struct TreeNode *left;
	struct TreeNode *right;
	TreeNode(int x) :
			val(x), left(NULL), right(NULL) {
	}
};
vector<vector<int>> res;
vector<int> path;

void FindPathCore(TreeNode* root,int expectNumber,int currentNumber){
    path.push_back(root->val);
    currentNumber += root->val;
    bool isLeaf = (root->left == nullptr && root->right == nullptr) ? true: false;

    if(currentNumber == expectNumber && isLeaf){
        res.push_back(path);
    }
    if(root->left != nullptr){
        FindPathCore(root->left,expectNumber,currentNumber);
    }
    if(root->right != nullptr){
        FindPathCore(root->right,expectNumber,currentNumber);
    }
    path.pop_back();
}
vector<vector<int> > FindPath(TreeNode* root,int expectNumber) {

    if(root == nullptr) return res;
    vector<int> path;
    int currentNumber = 0;
    FindPathCore(root, expectNumber, currentNumber);
    return res;
}

  

优质内容筛选与推荐>>
1、pymysql模块
2、使用以下代码连接并测试
3、蛇形填数
4、table.css
5、关于cookies的问题


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号